{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f02249e2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# importing libaries\n",
    "\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7c6ddce9",
   "metadata": {},
   "outputs": [],
   "source": [
    "class coRNNCell(nn.Module):\n",
    "    def __init__(self, n_inp, n_hid, dt, gamma, epsilon):\n",
    "        super(coRNNCell, self).__init__()\n",
    "        self.dt = dt\n",
    "        self.gamma = gamma\n",
    "        self.epsilon = epsilon\n",
    "        self.i2h = nn.Linear(n_inp + n_hid + n_hid, n_hid)\n",
    "\n",
    "    def forward(self, x, hy, hz):\n",
    "        hz = hz + self.dt * (torch.tanh(self.i2h(torch.cat((x, hz, hy), 1)))\n",
    "                             - self.gamma * hy - self.epsilon * hz)\n",
    "        hy = hy + self.dt * hz\n",
    "\n",
    "        return hy, hz\n",
    "\n",
    "# Define the coRNN model\n",
    "class coRNN(nn.Module):\n",
    "    def __init__(self, n_inp, n_hid, n_out, dt, gamma, epsilon):\n",
    "        super(coRNN, self).__init__()\n",
    "        self.n_hid = n_hid\n",
    "        self.cell = coRNNCell(n_inp, n_hid, dt, gamma, epsilon)\n",
    "        self.readout = nn.Linear(n_hid, n_out)\n",
    "\n",
    "    def forward(self, x):\n",
    "        hy = torch.zeros(x.size(1), self.n_hid)\n",
    "        hz = torch.zeros(x.size(1), self.n_hid)\n",
    "\n",
    "        for t in range(x.size(0)):\n",
    "            hy, hz = self.cell(x[t], hy, hz)\n",
    "        output = self.readout(hy)\n",
    "\n",
    "        return output"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "36d6fa55",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Toy problem data\n",
    "input_size = 256  # number of columns in a dataset\n",
    "hidden_size = 32  # number of neurons\n",
    "output_size = 256  \n",
    "sequence_length = 160  # number of sequences/ number of rows\n",
    "batch_size = 1\n",
    "num_epochs = 30000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "f6a2ae56",
   "metadata": {},
   "outputs": [],
   "source": [
    "# importing data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2103e0ff",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the .mat file\n",
    "v_data = scipy.io.loadmat('v.mat')\n",
    "h_data = scipy.io.loadmat('h.mat')\n",
    "x_data = scipy.io.loadmat('x.mat')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "172f53d3",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = x_data['X']\n",
    "u = h_data['h']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "bf954b1d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch._C.Generator at 0x7fec2807e790>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Set random seed for reproducibility\n",
    "torch.manual_seed(42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "cdabefdf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test data shape (256,)\n",
      "input data shape (160, 256)\n",
      "Target data shape (160, 256)\n"
     ]
    }
   ],
   "source": [
    "input_data = u[0:160,:]\n",
    "target_data = u[1:161, :]\n",
    "\n",
    "test_data = u[160, :]\n",
    "#test_target = u[161:201, :]\n",
    "\n",
    "print(\"test data shape\", test_data.shape)\n",
    "#print(\"test target shape\", test_target.shape)\n",
    "\n",
    "print(\"input data shape\",input_data.shape)\n",
    "print(\"Target data shape\",target_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "b32d98b1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "input tensor shape torch.Size([1, 160, 256])\n",
      "Target tensor shape torch.Size([1, 160, 256])\n"
     ]
    }
   ],
   "source": [
    "# Convert data to tensors\n",
    "input_tensor = torch.tensor(input_data).view(batch_size, sequence_length, input_size).float()\n",
    "target_tensor = torch.tensor(target_data).view(batch_size, sequence_length, output_size).float()\n",
    "\n",
    "print(\"input tensor shape\",input_tensor.shape)\n",
    "print(\"Target tensor shape\",target_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "b4c0af1d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Convert test data to tensors\n",
    "test_tensor = torch.tensor(test_data).view(batch_size, 1, input_size).float()\n",
    "#test_target_tensor = torch.tensor(test_target).view(batch_size, 40, output_size).float()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "928ae47f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 10/30000, Loss: 0.72874385\n",
      "Epoch: 20/30000, Loss: 0.71368051\n",
      "Epoch: 30/30000, Loss: 0.69919413\n",
      "Epoch: 40/30000, Loss: 0.68518984\n",
      "Epoch: 50/30000, Loss: 0.67164361\n",
      "Epoch: 60/30000, Loss: 0.65853310\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/data/localhome/tkapoor/.local/lib/python3.8/site-packages/torch/nn/modules/loss.py:520: UserWarning: Using a target size (torch.Size([1, 160, 256])) that is different to the input size (torch.Size([160, 256])). This will likely lead to incorrect results due to broadcasting. Please ensure they have the same size.\n",
      "  return F.mse_loss(input, target, reduction=self.reduction)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 70/30000, Loss: 0.64583015\n",
      "Epoch: 80/30000, Loss: 0.63350725\n",
      "Epoch: 90/30000, Loss: 0.62154043\n",
      "Epoch: 100/30000, Loss: 0.60990894\n",
      "Epoch: 110/30000, Loss: 0.59859467\n",
      "Epoch: 120/30000, Loss: 0.58758146\n",
      "Epoch: 130/30000, Loss: 0.57685506\n",
      "Epoch: 140/30000, Loss: 0.56640261\n",
      "Epoch: 150/30000, Loss: 0.55621243\n",
      "Epoch: 160/30000, Loss: 0.54627371\n",
      "Epoch: 170/30000, Loss: 0.53657657\n",
      "Epoch: 180/30000, Loss: 0.52711189\n",
      "Epoch: 190/30000, Loss: 0.51787120\n",
      "Epoch: 200/30000, Loss: 0.50884640\n",
      "Epoch: 210/30000, Loss: 0.50003022\n",
      "Epoch: 220/30000, Loss: 0.49141568\n",
      "Epoch: 230/30000, Loss: 0.48299623\n",
      "Epoch: 240/30000, Loss: 0.47476560\n",
      "Epoch: 250/30000, Loss: 0.46671790\n",
      "Epoch: 260/30000, Loss: 0.45884761\n",
      "Epoch: 270/30000, Loss: 0.45114937\n",
      "Epoch: 280/30000, Loss: 0.44361821\n",
      "Epoch: 290/30000, Loss: 0.43624920\n",
      "Epoch: 300/30000, Loss: 0.42903775\n",
      "Epoch: 310/30000, Loss: 0.42197943\n",
      "Epoch: 320/30000, Loss: 0.41507000\n",
      "Epoch: 330/30000, Loss: 0.40830532\n",
      "Epoch: 340/30000, Loss: 0.40168151\n",
      "Epoch: 350/30000, Loss: 0.39519471\n",
      "Epoch: 360/30000, Loss: 0.38884139\n",
      "Epoch: 370/30000, Loss: 0.38261795\n",
      "Epoch: 380/30000, Loss: 0.37652093\n",
      "Epoch: 390/30000, Loss: 0.37054715\n",
      "Epoch: 400/30000, Loss: 0.36469334\n",
      "Epoch: 410/30000, Loss: 0.35895655\n",
      "Epoch: 420/30000, Loss: 0.35333365\n",
      "Epoch: 430/30000, Loss: 0.34782186\n",
      "Epoch: 440/30000, Loss: 0.34241834\n",
      "Epoch: 450/30000, Loss: 0.33712038\n",
      "Epoch: 460/30000, Loss: 0.33192542\n",
      "Epoch: 470/30000, Loss: 0.32683080\n",
      "Epoch: 480/30000, Loss: 0.32183421\n",
      "Epoch: 490/30000, Loss: 0.31693313\n",
      "Epoch: 500/30000, Loss: 0.31212527\n",
      "Epoch: 510/30000, Loss: 0.30740839\n",
      "Epoch: 520/30000, Loss: 0.30278030\n",
      "Epoch: 530/30000, Loss: 0.29823884\n",
      "Epoch: 540/30000, Loss: 0.29378200\n",
      "Epoch: 550/30000, Loss: 0.28940773\n",
      "Epoch: 560/30000, Loss: 0.28511405\n",
      "Epoch: 570/30000, Loss: 0.28089914\n",
      "Epoch: 580/30000, Loss: 0.27676111\n",
      "Epoch: 590/30000, Loss: 0.27269816\n",
      "Epoch: 600/30000, Loss: 0.26870862\n",
      "Epoch: 610/30000, Loss: 0.26479071\n",
      "Epoch: 620/30000, Loss: 0.26094285\n",
      "Epoch: 630/30000, Loss: 0.25716338\n",
      "Epoch: 640/30000, Loss: 0.25345081\n",
      "Epoch: 650/30000, Loss: 0.24980354\n",
      "Epoch: 660/30000, Loss: 0.24622020\n",
      "Epoch: 670/30000, Loss: 0.24269931\n",
      "Epoch: 680/30000, Loss: 0.23923945\n",
      "Epoch: 690/30000, Loss: 0.23583937\n",
      "Epoch: 700/30000, Loss: 0.23249762\n",
      "Epoch: 710/30000, Loss: 0.22921295\n",
      "Epoch: 720/30000, Loss: 0.22598422\n",
      "Epoch: 730/30000, Loss: 0.22281007\n",
      "Epoch: 740/30000, Loss: 0.21968941\n",
      "Epoch: 750/30000, Loss: 0.21662109\n",
      "Epoch: 760/30000, Loss: 0.21360397\n",
      "Epoch: 770/30000, Loss: 0.21063700\n",
      "Epoch: 780/30000, Loss: 0.20771906\n",
      "Epoch: 790/30000, Loss: 0.20484915\n",
      "Epoch: 800/30000, Loss: 0.20202632\n",
      "Epoch: 810/30000, Loss: 0.19924955\n",
      "Epoch: 820/30000, Loss: 0.19651791\n",
      "Epoch: 830/30000, Loss: 0.19383049\n",
      "Epoch: 840/30000, Loss: 0.19118635\n",
      "Epoch: 850/30000, Loss: 0.18858466\n",
      "Epoch: 860/30000, Loss: 0.18602459\n",
      "Epoch: 870/30000, Loss: 0.18350530\n",
      "Epoch: 880/30000, Loss: 0.18102595\n",
      "Epoch: 890/30000, Loss: 0.17858583\n",
      "Epoch: 900/30000, Loss: 0.17618413\n",
      "Epoch: 910/30000, Loss: 0.17382012\n",
      "Epoch: 920/30000, Loss: 0.17149313\n",
      "Epoch: 930/30000, Loss: 0.16920240\n",
      "Epoch: 940/30000, Loss: 0.16694728\n",
      "Epoch: 950/30000, Loss: 0.16472712\n",
      "Epoch: 960/30000, Loss: 0.16254124\n",
      "Epoch: 970/30000, Loss: 0.16038907\n",
      "Epoch: 980/30000, Loss: 0.15826991\n",
      "Epoch: 990/30000, Loss: 0.15618329\n",
      "Epoch: 1000/30000, Loss: 0.15412854\n",
      "Epoch: 1010/30000, Loss: 0.15210512\n",
      "Epoch: 1020/30000, Loss: 0.15011249\n",
      "Epoch: 1030/30000, Loss: 0.14815012\n",
      "Epoch: 1040/30000, Loss: 0.14621750\n",
      "Epoch: 1050/30000, Loss: 0.14431408\n",
      "Epoch: 1060/30000, Loss: 0.14243940\n",
      "Epoch: 1070/30000, Loss: 0.14059296\n",
      "Epoch: 1080/30000, Loss: 0.13877432\n",
      "Epoch: 1090/30000, Loss: 0.13698301\n",
      "Epoch: 1100/30000, Loss: 0.13521859\n",
      "Epoch: 1110/30000, Loss: 0.13348061\n",
      "Epoch: 1120/30000, Loss: 0.13176863\n",
      "Epoch: 1130/30000, Loss: 0.13008228\n",
      "Epoch: 1140/30000, Loss: 0.12842113\n",
      "Epoch: 1150/30000, Loss: 0.12678477\n",
      "Epoch: 1160/30000, Loss: 0.12517285\n",
      "Epoch: 1170/30000, Loss: 0.12358496\n",
      "Epoch: 1180/30000, Loss: 0.12202076\n",
      "Epoch: 1190/30000, Loss: 0.12047987\n",
      "Epoch: 1200/30000, Loss: 0.11896193\n",
      "Epoch: 1210/30000, Loss: 0.11746664\n",
      "Epoch: 1220/30000, Loss: 0.11599360\n",
      "Epoch: 1230/30000, Loss: 0.11454253\n",
      "Epoch: 1240/30000, Loss: 0.11311309\n",
      "Epoch: 1250/30000, Loss: 0.11170495\n",
      "Epoch: 1260/30000, Loss: 0.11031783\n",
      "Epoch: 1270/30000, Loss: 0.10895141\n",
      "Epoch: 1280/30000, Loss: 0.10760538\n",
      "Epoch: 1290/30000, Loss: 0.10627947\n",
      "Epoch: 1300/30000, Loss: 0.10497338\n",
      "Epoch: 1310/30000, Loss: 0.10368685\n",
      "Epoch: 1320/30000, Loss: 0.10241958\n",
      "Epoch: 1330/30000, Loss: 0.10117130\n",
      "Epoch: 1340/30000, Loss: 0.09994178\n",
      "Epoch: 1350/30000, Loss: 0.09873073\n",
      "Epoch: 1360/30000, Loss: 0.09753790\n",
      "Epoch: 1370/30000, Loss: 0.09636303\n",
      "Epoch: 1380/30000, Loss: 0.09520589\n",
      "Epoch: 1390/30000, Loss: 0.09406622\n",
      "Epoch: 1400/30000, Loss: 0.09294381\n",
      "Epoch: 1410/30000, Loss: 0.09183839\n",
      "Epoch: 1420/30000, Loss: 0.09074976\n",
      "Epoch: 1430/30000, Loss: 0.08967766\n",
      "Epoch: 1440/30000, Loss: 0.08862188\n",
      "Epoch: 1450/30000, Loss: 0.08758222\n",
      "Epoch: 1460/30000, Loss: 0.08655845\n",
      "Epoch: 1470/30000, Loss: 0.08555034\n",
      "Epoch: 1480/30000, Loss: 0.08455769\n",
      "Epoch: 1490/30000, Loss: 0.08358030\n",
      "Epoch: 1500/30000, Loss: 0.08261798\n",
      "Epoch: 1510/30000, Loss: 0.08167051\n",
      "Epoch: 1520/30000, Loss: 0.08073767\n",
      "Epoch: 1530/30000, Loss: 0.07981931\n",
      "Epoch: 1540/30000, Loss: 0.07891522\n",
      "Epoch: 1550/30000, Loss: 0.07802518\n",
      "Epoch: 1560/30000, Loss: 0.07714905\n",
      "Epoch: 1570/30000, Loss: 0.07628661\n",
      "Epoch: 1580/30000, Loss: 0.07543769\n",
      "Epoch: 1590/30000, Loss: 0.07460212\n",
      "Epoch: 1600/30000, Loss: 0.07377970\n",
      "Epoch: 1610/30000, Loss: 0.07297027\n",
      "Epoch: 1620/30000, Loss: 0.07217366\n",
      "Epoch: 1630/30000, Loss: 0.07138968\n",
      "Epoch: 1640/30000, Loss: 0.07061817\n",
      "Epoch: 1650/30000, Loss: 0.06985897\n",
      "Epoch: 1660/30000, Loss: 0.06911191\n",
      "Epoch: 1670/30000, Loss: 0.06837683\n",
      "Epoch: 1680/30000, Loss: 0.06765357\n",
      "Epoch: 1690/30000, Loss: 0.06694196\n",
      "Epoch: 1700/30000, Loss: 0.06624186\n",
      "Epoch: 1710/30000, Loss: 0.06555311\n",
      "Epoch: 1720/30000, Loss: 0.06487555\n",
      "Epoch: 1730/30000, Loss: 0.06420903\n",
      "Epoch: 1740/30000, Loss: 0.06355342\n",
      "Epoch: 1750/30000, Loss: 0.06290855\n",
      "Epoch: 1760/30000, Loss: 0.06227428\n",
      "Epoch: 1770/30000, Loss: 0.06165046\n",
      "Epoch: 1780/30000, Loss: 0.06103696\n",
      "Epoch: 1790/30000, Loss: 0.06043364\n",
      "Epoch: 1800/30000, Loss: 0.05984035\n",
      "Epoch: 1810/30000, Loss: 0.05925696\n",
      "Epoch: 1820/30000, Loss: 0.05868333\n",
      "Epoch: 1830/30000, Loss: 0.05811932\n",
      "Epoch: 1840/30000, Loss: 0.05756482\n",
      "Epoch: 1850/30000, Loss: 0.05701967\n",
      "Epoch: 1860/30000, Loss: 0.05648376\n",
      "Epoch: 1870/30000, Loss: 0.05595694\n",
      "Epoch: 1880/30000, Loss: 0.05543911\n",
      "Epoch: 1890/30000, Loss: 0.05493014\n",
      "Epoch: 1900/30000, Loss: 0.05442988\n",
      "Epoch: 1910/30000, Loss: 0.05393825\n",
      "Epoch: 1920/30000, Loss: 0.05345509\n",
      "Epoch: 1930/30000, Loss: 0.05298029\n",
      "Epoch: 1940/30000, Loss: 0.05251376\n",
      "Epoch: 1950/30000, Loss: 0.05205534\n",
      "Epoch: 1960/30000, Loss: 0.05160494\n",
      "Epoch: 1970/30000, Loss: 0.05116243\n",
      "Epoch: 1980/30000, Loss: 0.05072773\n",
      "Epoch: 1990/30000, Loss: 0.05030070\n",
      "Epoch: 2000/30000, Loss: 0.04988122\n",
      "Epoch: 2010/30000, Loss: 0.04946921\n",
      "Epoch: 2020/30000, Loss: 0.04906454\n",
      "Epoch: 2030/30000, Loss: 0.04866712\n",
      "Epoch: 2040/30000, Loss: 0.04827683\n",
      "Epoch: 2050/30000, Loss: 0.04789357\n",
      "Epoch: 2060/30000, Loss: 0.04751724\n",
      "Epoch: 2070/30000, Loss: 0.04714774\n",
      "Epoch: 2080/30000, Loss: 0.04678497\n",
      "Epoch: 2090/30000, Loss: 0.04642882\n",
      "Epoch: 2100/30000, Loss: 0.04607920\n",
      "Epoch: 2110/30000, Loss: 0.04573601\n",
      "Epoch: 2120/30000, Loss: 0.04539916\n",
      "Epoch: 2130/30000, Loss: 0.04506855\n",
      "Epoch: 2140/30000, Loss: 0.04474408\n",
      "Epoch: 2150/30000, Loss: 0.04442566\n",
      "Epoch: 2160/30000, Loss: 0.04411321\n",
      "Epoch: 2170/30000, Loss: 0.04380663\n",
      "Epoch: 2180/30000, Loss: 0.04350583\n",
      "Epoch: 2190/30000, Loss: 0.04321072\n",
      "Epoch: 2200/30000, Loss: 0.04292122\n",
      "Epoch: 2210/30000, Loss: 0.04263724\n",
      "Epoch: 2220/30000, Loss: 0.04235869\n",
      "Epoch: 2230/30000, Loss: 0.04208549\n",
      "Epoch: 2240/30000, Loss: 0.04181756\n",
      "Epoch: 2250/30000, Loss: 0.04155481\n",
      "Epoch: 2260/30000, Loss: 0.04129717\n",
      "Epoch: 2270/30000, Loss: 0.04104454\n",
      "Epoch: 2280/30000, Loss: 0.04079686\n",
      "Epoch: 2290/30000, Loss: 0.04055404\n",
      "Epoch: 2300/30000, Loss: 0.04031601\n",
      "Epoch: 2310/30000, Loss: 0.04008269\n",
      "Epoch: 2320/30000, Loss: 0.03985401\n",
      "Epoch: 2330/30000, Loss: 0.03962988\n",
      "Epoch: 2340/30000, Loss: 0.03941024\n",
      "Epoch: 2350/30000, Loss: 0.03919501\n",
      "Epoch: 2360/30000, Loss: 0.03898413\n",
      "Epoch: 2370/30000, Loss: 0.03877751\n",
      "Epoch: 2380/30000, Loss: 0.03857509\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 2390/30000, Loss: 0.03837682\n",
      "Epoch: 2400/30000, Loss: 0.03818259\n",
      "Epoch: 2410/30000, Loss: 0.03799236\n",
      "Epoch: 2420/30000, Loss: 0.03780606\n",
      "Epoch: 2430/30000, Loss: 0.03762362\n",
      "Epoch: 2440/30000, Loss: 0.03744498\n",
      "Epoch: 2450/30000, Loss: 0.03727007\n",
      "Epoch: 2460/30000, Loss: 0.03709883\n",
      "Epoch: 2470/30000, Loss: 0.03693120\n",
      "Epoch: 2480/30000, Loss: 0.03676711\n",
      "Epoch: 2490/30000, Loss: 0.03660651\n",
      "Epoch: 2500/30000, Loss: 0.03644933\n",
      "Epoch: 2510/30000, Loss: 0.03629552\n",
      "Epoch: 2520/30000, Loss: 0.03614501\n",
      "Epoch: 2530/30000, Loss: 0.03599775\n",
      "Epoch: 2540/30000, Loss: 0.03585368\n",
      "Epoch: 2550/30000, Loss: 0.03571275\n",
      "Epoch: 2560/30000, Loss: 0.03557489\n",
      "Epoch: 2570/30000, Loss: 0.03544006\n",
      "Epoch: 2580/30000, Loss: 0.03530820\n",
      "Epoch: 2590/30000, Loss: 0.03517926\n",
      "Epoch: 2600/30000, Loss: 0.03505317\n",
      "Epoch: 2610/30000, Loss: 0.03492991\n",
      "Epoch: 2620/30000, Loss: 0.03480940\n",
      "Epoch: 2630/30000, Loss: 0.03469161\n",
      "Epoch: 2640/30000, Loss: 0.03457647\n",
      "Epoch: 2650/30000, Loss: 0.03446395\n",
      "Epoch: 2660/30000, Loss: 0.03435399\n",
      "Epoch: 2670/30000, Loss: 0.03424655\n",
      "Epoch: 2680/30000, Loss: 0.03414158\n",
      "Epoch: 2690/30000, Loss: 0.03403903\n",
      "Epoch: 2700/30000, Loss: 0.03393885\n",
      "Epoch: 2710/30000, Loss: 0.03384101\n",
      "Epoch: 2720/30000, Loss: 0.03374545\n",
      "Epoch: 2730/30000, Loss: 0.03365213\n",
      "Epoch: 2740/30000, Loss: 0.03356103\n",
      "Epoch: 2750/30000, Loss: 0.03347207\n",
      "Epoch: 2760/30000, Loss: 0.03338523\n",
      "Epoch: 2770/30000, Loss: 0.03330047\n",
      "Epoch: 2780/30000, Loss: 0.03321774\n",
      "Epoch: 2790/30000, Loss: 0.03313700\n",
      "Epoch: 2800/30000, Loss: 0.03305821\n",
      "Epoch: 2810/30000, Loss: 0.03298135\n",
      "Epoch: 2820/30000, Loss: 0.03290635\n",
      "Epoch: 2830/30000, Loss: 0.03283320\n",
      "Epoch: 2840/30000, Loss: 0.03276185\n",
      "Epoch: 2850/30000, Loss: 0.03269227\n",
      "Epoch: 2860/30000, Loss: 0.03262442\n",
      "Epoch: 2870/30000, Loss: 0.03255825\n",
      "Epoch: 2880/30000, Loss: 0.03249376\n",
      "Epoch: 2890/30000, Loss: 0.03243088\n",
      "Epoch: 2900/30000, Loss: 0.03236960\n",
      "Epoch: 2910/30000, Loss: 0.03230987\n",
      "Epoch: 2920/30000, Loss: 0.03225167\n",
      "Epoch: 2930/30000, Loss: 0.03219496\n",
      "Epoch: 2940/30000, Loss: 0.03213971\n",
      "Epoch: 2950/30000, Loss: 0.03208590\n",
      "Epoch: 2960/30000, Loss: 0.03203348\n",
      "Epoch: 2970/30000, Loss: 0.03198243\n",
      "Epoch: 2980/30000, Loss: 0.03193272\n",
      "Epoch: 2990/30000, Loss: 0.03188432\n",
      "Epoch: 3000/30000, Loss: 0.03183721\n",
      "Epoch: 3010/30000, Loss: 0.03179134\n",
      "Epoch: 3020/30000, Loss: 0.03174671\n",
      "Epoch: 3030/30000, Loss: 0.03170327\n",
      "Epoch: 3040/30000, Loss: 0.03166100\n",
      "Epoch: 3050/30000, Loss: 0.03161988\n",
      "Epoch: 3060/30000, Loss: 0.03157988\n",
      "Epoch: 3070/30000, Loss: 0.03154097\n",
      "Epoch: 3080/30000, Loss: 0.03150313\n",
      "Epoch: 3090/30000, Loss: 0.03146634\n",
      "Epoch: 3100/30000, Loss: 0.03143056\n",
      "Epoch: 3110/30000, Loss: 0.03139579\n",
      "Epoch: 3120/30000, Loss: 0.03136199\n",
      "Epoch: 3130/30000, Loss: 0.03132914\n",
      "Epoch: 3140/30000, Loss: 0.03129721\n",
      "Epoch: 3150/30000, Loss: 0.03126620\n",
      "Epoch: 3160/30000, Loss: 0.03123607\n",
      "Epoch: 3170/30000, Loss: 0.03120680\n",
      "Epoch: 3180/30000, Loss: 0.03117837\n",
      "Epoch: 3190/30000, Loss: 0.03115077\n",
      "Epoch: 3200/30000, Loss: 0.03112397\n",
      "Epoch: 3210/30000, Loss: 0.03109795\n",
      "Epoch: 3220/30000, Loss: 0.03107270\n",
      "Epoch: 3230/30000, Loss: 0.03104819\n",
      "Epoch: 3240/30000, Loss: 0.03102441\n",
      "Epoch: 3250/30000, Loss: 0.03100134\n",
      "Epoch: 3260/30000, Loss: 0.03097895\n",
      "Epoch: 3270/30000, Loss: 0.03095724\n",
      "Epoch: 3280/30000, Loss: 0.03093619\n",
      "Epoch: 3290/30000, Loss: 0.03091577\n",
      "Epoch: 3300/30000, Loss: 0.03089597\n",
      "Epoch: 3310/30000, Loss: 0.03087679\n",
      "Epoch: 3320/30000, Loss: 0.03085819\n",
      "Epoch: 3330/30000, Loss: 0.03084017\n",
      "Epoch: 3340/30000, Loss: 0.03082271\n",
      "Epoch: 3350/30000, Loss: 0.03080579\n",
      "Epoch: 3360/30000, Loss: 0.03078941\n",
      "Epoch: 3370/30000, Loss: 0.03077354\n",
      "Epoch: 3380/30000, Loss: 0.03075818\n",
      "Epoch: 3390/30000, Loss: 0.03074330\n",
      "Epoch: 3400/30000, Loss: 0.03072890\n",
      "Epoch: 3410/30000, Loss: 0.03071496\n",
      "Epoch: 3420/30000, Loss: 0.03070148\n",
      "Epoch: 3430/30000, Loss: 0.03068843\n",
      "Epoch: 3440/30000, Loss: 0.03067580\n",
      "Epoch: 3450/30000, Loss: 0.03066360\n",
      "Epoch: 3460/30000, Loss: 0.03065180\n",
      "Epoch: 3470/30000, Loss: 0.03064037\n",
      "Epoch: 3480/30000, Loss: 0.03062934\n",
      "Epoch: 3490/30000, Loss: 0.03061868\n",
      "Epoch: 3500/30000, Loss: 0.03060837\n",
      "Epoch: 3510/30000, Loss: 0.03059841\n",
      "Epoch: 3520/30000, Loss: 0.03058879\n",
      "Epoch: 3530/30000, Loss: 0.03057949\n",
      "Epoch: 3540/30000, Loss: 0.03057051\n",
      "Epoch: 3550/30000, Loss: 0.03056185\n",
      "Epoch: 3560/30000, Loss: 0.03055348\n",
      "Epoch: 3570/30000, Loss: 0.03054541\n",
      "Epoch: 3580/30000, Loss: 0.03053762\n",
      "Epoch: 3590/30000, Loss: 0.03053010\n",
      "Epoch: 3600/30000, Loss: 0.03052284\n",
      "Epoch: 3610/30000, Loss: 0.03051584\n",
      "Epoch: 3620/30000, Loss: 0.03050910\n",
      "Epoch: 3630/30000, Loss: 0.03050259\n",
      "Epoch: 3640/30000, Loss: 0.03049632\n",
      "Epoch: 3650/30000, Loss: 0.03049027\n",
      "Epoch: 3660/30000, Loss: 0.03048445\n",
      "Epoch: 3670/30000, Loss: 0.03047884\n",
      "Epoch: 3680/30000, Loss: 0.03047343\n",
      "Epoch: 3690/30000, Loss: 0.03046823\n",
      "Epoch: 3700/30000, Loss: 0.03046321\n",
      "Epoch: 3710/30000, Loss: 0.03045839\n",
      "Epoch: 3720/30000, Loss: 0.03045374\n",
      "Epoch: 3730/30000, Loss: 0.03044927\n",
      "Epoch: 3740/30000, Loss: 0.03044497\n",
      "Epoch: 3750/30000, Loss: 0.03044083\n",
      "Epoch: 3760/30000, Loss: 0.03043685\n",
      "Epoch: 3770/30000, Loss: 0.03043302\n",
      "Epoch: 3780/30000, Loss: 0.03042934\n",
      "Epoch: 3790/30000, Loss: 0.03042581\n",
      "Epoch: 3800/30000, Loss: 0.03042241\n",
      "Epoch: 3810/30000, Loss: 0.03041914\n",
      "Epoch: 3820/30000, Loss: 0.03041601\n",
      "Epoch: 3830/30000, Loss: 0.03041299\n",
      "Epoch: 3840/30000, Loss: 0.03041010\n",
      "Epoch: 3850/30000, Loss: 0.03040732\n",
      "Epoch: 3860/30000, Loss: 0.03040466\n",
      "Epoch: 3870/30000, Loss: 0.03040210\n",
      "Epoch: 3880/30000, Loss: 0.03039964\n",
      "Epoch: 3890/30000, Loss: 0.03039729\n",
      "Epoch: 3900/30000, Loss: 0.03039503\n",
      "Epoch: 3910/30000, Loss: 0.03039287\n",
      "Epoch: 3920/30000, Loss: 0.03039079\n",
      "Epoch: 3930/30000, Loss: 0.03038881\n",
      "Epoch: 3940/30000, Loss: 0.03038690\n",
      "Epoch: 3950/30000, Loss: 0.03038507\n",
      "Epoch: 3960/30000, Loss: 0.03038332\n",
      "Epoch: 3970/30000, Loss: 0.03038165\n",
      "Epoch: 3980/30000, Loss: 0.03038005\n",
      "Epoch: 3990/30000, Loss: 0.03037851\n",
      "Epoch: 4000/30000, Loss: 0.03037705\n",
      "Epoch: 4010/30000, Loss: 0.03037564\n",
      "Epoch: 4020/30000, Loss: 0.03037430\n",
      "Epoch: 4030/30000, Loss: 0.03037302\n",
      "Epoch: 4040/30000, Loss: 0.03037179\n",
      "Epoch: 4050/30000, Loss: 0.03037061\n",
      "Epoch: 4060/30000, Loss: 0.03036950\n",
      "Epoch: 4070/30000, Loss: 0.03036842\n",
      "Epoch: 4080/30000, Loss: 0.03036740\n",
      "Epoch: 4090/30000, Loss: 0.03036642\n",
      "Epoch: 4100/30000, Loss: 0.03036549\n",
      "Epoch: 4110/30000, Loss: 0.03036460\n",
      "Epoch: 4120/30000, Loss: 0.03036375\n",
      "Epoch: 4130/30000, Loss: 0.03036294\n",
      "Epoch: 4140/30000, Loss: 0.03036217\n",
      "Epoch: 4150/30000, Loss: 0.03036143\n",
      "Epoch: 4160/30000, Loss: 0.03036073\n",
      "Epoch: 4170/30000, Loss: 0.03036006\n",
      "Epoch: 4180/30000, Loss: 0.03035942\n",
      "Epoch: 4190/30000, Loss: 0.03035881\n",
      "Epoch: 4200/30000, Loss: 0.03035824\n",
      "Epoch: 4210/30000, Loss: 0.03035768\n",
      "Epoch: 4220/30000, Loss: 0.03035716\n",
      "Epoch: 4230/30000, Loss: 0.03035666\n",
      "Epoch: 4240/30000, Loss: 0.03035619\n",
      "Epoch: 4250/30000, Loss: 0.03035573\n",
      "Epoch: 4260/30000, Loss: 0.03035530\n",
      "Epoch: 4270/30000, Loss: 0.03035490\n",
      "Epoch: 4280/30000, Loss: 0.03035451\n",
      "Epoch: 4290/30000, Loss: 0.03035414\n",
      "Epoch: 4300/30000, Loss: 0.03035379\n",
      "Epoch: 4310/30000, Loss: 0.03035346\n",
      "Epoch: 4320/30000, Loss: 0.03035315\n",
      "Epoch: 4330/30000, Loss: 0.03035284\n",
      "Epoch: 4340/30000, Loss: 0.03035256\n",
      "Epoch: 4350/30000, Loss: 0.03035229\n",
      "Epoch: 4360/30000, Loss: 0.03035204\n",
      "Epoch: 4370/30000, Loss: 0.03035179\n",
      "Epoch: 4380/30000, Loss: 0.03035156\n",
      "Epoch: 4390/30000, Loss: 0.03035135\n",
      "Epoch: 4400/30000, Loss: 0.03035114\n",
      "Epoch: 4410/30000, Loss: 0.03035095\n",
      "Epoch: 4420/30000, Loss: 0.03035076\n",
      "Epoch: 4430/30000, Loss: 0.03035059\n",
      "Epoch: 4440/30000, Loss: 0.03035042\n",
      "Epoch: 4450/30000, Loss: 0.03035026\n",
      "Epoch: 4460/30000, Loss: 0.03035012\n",
      "Epoch: 4470/30000, Loss: 0.03034998\n",
      "Epoch: 4480/30000, Loss: 0.03034985\n",
      "Epoch: 4490/30000, Loss: 0.03034972\n",
      "Epoch: 4500/30000, Loss: 0.03034960\n",
      "Epoch: 4510/30000, Loss: 0.03034949\n",
      "Epoch: 4520/30000, Loss: 0.03034938\n",
      "Epoch: 4530/30000, Loss: 0.03034929\n",
      "Epoch: 4540/30000, Loss: 0.03034920\n",
      "Epoch: 4550/30000, Loss: 0.03034911\n",
      "Epoch: 4560/30000, Loss: 0.03034902\n",
      "Epoch: 4570/30000, Loss: 0.03034895\n",
      "Epoch: 4580/30000, Loss: 0.03034887\n",
      "Epoch: 4590/30000, Loss: 0.03034880\n",
      "Epoch: 4600/30000, Loss: 0.03034874\n",
      "Epoch: 4610/30000, Loss: 0.03034867\n",
      "Epoch: 4620/30000, Loss: 0.03034861\n",
      "Epoch: 4630/30000, Loss: 0.03034856\n",
      "Epoch: 4640/30000, Loss: 0.03034851\n",
      "Epoch: 4650/30000, Loss: 0.03034846\n",
      "Epoch: 4660/30000, Loss: 0.03034842\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 4670/30000, Loss: 0.03034838\n",
      "Epoch: 4680/30000, Loss: 0.03034833\n",
      "Epoch: 4690/30000, Loss: 0.03034830\n",
      "Epoch: 4700/30000, Loss: 0.03034826\n",
      "Epoch: 4710/30000, Loss: 0.03034823\n",
      "Epoch: 4720/30000, Loss: 0.03034820\n",
      "Epoch: 4730/30000, Loss: 0.03034817\n",
      "Epoch: 4740/30000, Loss: 0.03034814\n",
      "Epoch: 4750/30000, Loss: 0.03034811\n",
      "Epoch: 4760/30000, Loss: 0.03034809\n",
      "Epoch: 4770/30000, Loss: 0.03034807\n",
      "Epoch: 4780/30000, Loss: 0.03034804\n",
      "Epoch: 4790/30000, Loss: 0.03034803\n",
      "Epoch: 4800/30000, Loss: 0.03034801\n",
      "Epoch: 4810/30000, Loss: 0.03034799\n",
      "Epoch: 4820/30000, Loss: 0.03034797\n",
      "Epoch: 4830/30000, Loss: 0.03034796\n",
      "Epoch: 4840/30000, Loss: 0.03034795\n",
      "Epoch: 4850/30000, Loss: 0.03034793\n",
      "Epoch: 4860/30000, Loss: 0.03034792\n",
      "Epoch: 4870/30000, Loss: 0.03034791\n",
      "Epoch: 4880/30000, Loss: 0.03034790\n",
      "Epoch: 4890/30000, Loss: 0.03034789\n",
      "Epoch: 4900/30000, Loss: 0.03034788\n",
      "Epoch: 4910/30000, Loss: 0.03034787\n",
      "Epoch: 4920/30000, Loss: 0.03034786\n",
      "Epoch: 4930/30000, Loss: 0.03034786\n",
      "Epoch: 4940/30000, Loss: 0.03034785\n",
      "Epoch: 4950/30000, Loss: 0.03034784\n",
      "Epoch: 4960/30000, Loss: 0.03034784\n",
      "Epoch: 4970/30000, Loss: 0.03034783\n",
      "Epoch: 4980/30000, Loss: 0.03034783\n",
      "Epoch: 4990/30000, Loss: 0.03034782\n",
      "Epoch: 5000/30000, Loss: 0.03034781\n",
      "Epoch: 5010/30000, Loss: 0.03034781\n",
      "Epoch: 5020/30000, Loss: 0.03034781\n",
      "Epoch: 5030/30000, Loss: 0.03034781\n",
      "Epoch: 5040/30000, Loss: 0.03034780\n",
      "Epoch: 5050/30000, Loss: 0.03034779\n",
      "Epoch: 5060/30000, Loss: 0.03034779\n",
      "Epoch: 5070/30000, Loss: 0.03034779\n",
      "Epoch: 5080/30000, Loss: 0.03034779\n",
      "Epoch: 5090/30000, Loss: 0.03034779\n",
      "Epoch: 5100/30000, Loss: 0.03034778\n",
      "Epoch: 5110/30000, Loss: 0.03034778\n",
      "Epoch: 5120/30000, Loss: 0.03034778\n",
      "Epoch: 5130/30000, Loss: 0.03034778\n",
      "Epoch: 5140/30000, Loss: 0.03034778\n",
      "Epoch: 5150/30000, Loss: 0.03034777\n",
      "Epoch: 5160/30000, Loss: 0.03034777\n",
      "Epoch: 5170/30000, Loss: 0.03034777\n",
      "Epoch: 5180/30000, Loss: 0.03034776\n",
      "Epoch: 5190/30000, Loss: 0.03034776\n",
      "Epoch: 5200/30000, Loss: 0.03034776\n",
      "Epoch: 5210/30000, Loss: 0.03034776\n",
      "Epoch: 5220/30000, Loss: 0.03034776\n",
      "Epoch: 5230/30000, Loss: 0.03034776\n",
      "Epoch: 5240/30000, Loss: 0.03034775\n",
      "Epoch: 5250/30000, Loss: 0.03034774\n",
      "Epoch: 5260/30000, Loss: 0.03034772\n",
      "Epoch: 5270/30000, Loss: 0.03034764\n",
      "Epoch: 5280/30000, Loss: 0.03034276\n",
      "Epoch: 5290/30000, Loss: 0.03026003\n",
      "Epoch: 5300/30000, Loss: 0.03020382\n",
      "Epoch: 5310/30000, Loss: 0.03015691\n",
      "Epoch: 5320/30000, Loss: 0.03011313\n",
      "Epoch: 5330/30000, Loss: 0.03007077\n",
      "Epoch: 5340/30000, Loss: 0.03002955\n",
      "Epoch: 5350/30000, Loss: 0.02998951\n",
      "Epoch: 5360/30000, Loss: 0.02995065\n",
      "Epoch: 5370/30000, Loss: 0.02991291\n",
      "Epoch: 5380/30000, Loss: 0.02987622\n",
      "Epoch: 5390/30000, Loss: 0.02984053\n",
      "Epoch: 5400/30000, Loss: 0.02980576\n",
      "Epoch: 5410/30000, Loss: 0.02977186\n",
      "Epoch: 5420/30000, Loss: 0.02973877\n",
      "Epoch: 5430/30000, Loss: 0.02970642\n",
      "Epoch: 5440/30000, Loss: 0.02967478\n",
      "Epoch: 5450/30000, Loss: 0.02964380\n",
      "Epoch: 5460/30000, Loss: 0.02961343\n",
      "Epoch: 5470/30000, Loss: 0.02958364\n",
      "Epoch: 5480/30000, Loss: 0.02955439\n",
      "Epoch: 5490/30000, Loss: 0.02952564\n",
      "Epoch: 5500/30000, Loss: 0.02949739\n",
      "Epoch: 5510/30000, Loss: 0.02946959\n",
      "Epoch: 5520/30000, Loss: 0.02944221\n",
      "Epoch: 5530/30000, Loss: 0.02941525\n",
      "Epoch: 5540/30000, Loss: 0.02938867\n",
      "Epoch: 5550/30000, Loss: 0.02936245\n",
      "Epoch: 5560/30000, Loss: 0.02933659\n",
      "Epoch: 5570/30000, Loss: 0.02931106\n",
      "Epoch: 5580/30000, Loss: 0.02928585\n",
      "Epoch: 5590/30000, Loss: 0.02926094\n",
      "Epoch: 5600/30000, Loss: 0.02923633\n",
      "Epoch: 5610/30000, Loss: 0.02921199\n",
      "Epoch: 5620/30000, Loss: 0.02918792\n",
      "Epoch: 5630/30000, Loss: 0.02916410\n",
      "Epoch: 5640/30000, Loss: 0.02914053\n",
      "Epoch: 5650/30000, Loss: 0.02911719\n",
      "Epoch: 5660/30000, Loss: 0.02909409\n",
      "Epoch: 5670/30000, Loss: 0.02907119\n",
      "Epoch: 5680/30000, Loss: 0.02904852\n",
      "Epoch: 5690/30000, Loss: 0.02902604\n",
      "Epoch: 5700/30000, Loss: 0.02900377\n",
      "Epoch: 5710/30000, Loss: 0.02898168\n",
      "Epoch: 5720/30000, Loss: 0.02895977\n",
      "Epoch: 5730/30000, Loss: 0.02893805\n",
      "Epoch: 5740/30000, Loss: 0.02891649\n",
      "Epoch: 5750/30000, Loss: 0.02889510\n",
      "Epoch: 5760/30000, Loss: 0.02887387\n",
      "Epoch: 5770/30000, Loss: 0.02885280\n",
      "Epoch: 5780/30000, Loss: 0.02883188\n",
      "Epoch: 5790/30000, Loss: 0.02881111\n",
      "Epoch: 5800/30000, Loss: 0.02879048\n",
      "Epoch: 5810/30000, Loss: 0.02876999\n",
      "Epoch: 5820/30000, Loss: 0.02874963\n",
      "Epoch: 5830/30000, Loss: 0.02872941\n",
      "Epoch: 5840/30000, Loss: 0.02870931\n",
      "Epoch: 5850/30000, Loss: 0.02868932\n",
      "Epoch: 5860/30000, Loss: 0.02866945\n",
      "Epoch: 5870/30000, Loss: 0.02864965\n",
      "Epoch: 5880/30000, Loss: 0.02862961\n",
      "Epoch: 5890/30000, Loss: 0.02859012\n",
      "Epoch: 5900/30000, Loss: 0.02852751\n",
      "Epoch: 5910/30000, Loss: 0.02846867\n",
      "Epoch: 5920/30000, Loss: 0.02841033\n",
      "Epoch: 5930/30000, Loss: 0.02835217\n",
      "Epoch: 5940/30000, Loss: 0.02829472\n",
      "Epoch: 5950/30000, Loss: 0.02823793\n",
      "Epoch: 5960/30000, Loss: 0.02818199\n",
      "Epoch: 5970/30000, Loss: 0.02812698\n",
      "Epoch: 5980/30000, Loss: 0.02807293\n",
      "Epoch: 5990/30000, Loss: 0.02801984\n",
      "Epoch: 6000/30000, Loss: 0.02796770\n",
      "Epoch: 6010/30000, Loss: 0.02791647\n",
      "Epoch: 6020/30000, Loss: 0.02786614\n",
      "Epoch: 6030/30000, Loss: 0.02781666\n",
      "Epoch: 6040/30000, Loss: 0.02776799\n",
      "Epoch: 6050/30000, Loss: 0.02772011\n",
      "Epoch: 6060/30000, Loss: 0.02767297\n",
      "Epoch: 6070/30000, Loss: 0.02762654\n",
      "Epoch: 6080/30000, Loss: 0.02758078\n",
      "Epoch: 6090/30000, Loss: 0.02753567\n",
      "Epoch: 6100/30000, Loss: 0.02749116\n",
      "Epoch: 6110/30000, Loss: 0.02744725\n",
      "Epoch: 6120/30000, Loss: 0.02740389\n",
      "Epoch: 6130/30000, Loss: 0.02736107\n",
      "Epoch: 6140/30000, Loss: 0.02731876\n",
      "Epoch: 6150/30000, Loss: 0.02727693\n",
      "Epoch: 6160/30000, Loss: 0.02723558\n",
      "Epoch: 6170/30000, Loss: 0.02719467\n",
      "Epoch: 6180/30000, Loss: 0.02715420\n",
      "Epoch: 6190/30000, Loss: 0.02711414\n",
      "Epoch: 6200/30000, Loss: 0.02707448\n",
      "Epoch: 6210/30000, Loss: 0.02703521\n",
      "Epoch: 6220/30000, Loss: 0.02699630\n",
      "Epoch: 6230/30000, Loss: 0.02695775\n",
      "Epoch: 6240/30000, Loss: 0.02691954\n",
      "Epoch: 6250/30000, Loss: 0.02688167\n",
      "Epoch: 6260/30000, Loss: 0.02684412\n",
      "Epoch: 6270/30000, Loss: 0.02680688\n",
      "Epoch: 6280/30000, Loss: 0.02676994\n",
      "Epoch: 6290/30000, Loss: 0.02673330\n",
      "Epoch: 6300/30000, Loss: 0.02669694\n",
      "Epoch: 6310/30000, Loss: 0.02666085\n",
      "Epoch: 6320/30000, Loss: 0.02662503\n",
      "Epoch: 6330/30000, Loss: 0.02658946\n",
      "Epoch: 6340/30000, Loss: 0.02655415\n",
      "Epoch: 6350/30000, Loss: 0.02651908\n",
      "Epoch: 6360/30000, Loss: 0.02648425\n",
      "Epoch: 6370/30000, Loss: 0.02644966\n",
      "Epoch: 6380/30000, Loss: 0.02641528\n",
      "Epoch: 6390/30000, Loss: 0.02638113\n",
      "Epoch: 6400/30000, Loss: 0.02634719\n",
      "Epoch: 6410/30000, Loss: 0.02631346\n",
      "Epoch: 6420/30000, Loss: 0.02627993\n",
      "Epoch: 6430/30000, Loss: 0.02624661\n",
      "Epoch: 6440/30000, Loss: 0.02621347\n",
      "Epoch: 6450/30000, Loss: 0.02618053\n",
      "Epoch: 6460/30000, Loss: 0.02614777\n",
      "Epoch: 6470/30000, Loss: 0.02611519\n",
      "Epoch: 6480/30000, Loss: 0.02608280\n",
      "Epoch: 6490/30000, Loss: 0.02605057\n",
      "Epoch: 6500/30000, Loss: 0.02601851\n",
      "Epoch: 6510/30000, Loss: 0.02598662\n",
      "Epoch: 6520/30000, Loss: 0.02595489\n",
      "Epoch: 6530/30000, Loss: 0.02592331\n",
      "Epoch: 6540/30000, Loss: 0.02589190\n",
      "Epoch: 6550/30000, Loss: 0.02586062\n",
      "Epoch: 6560/30000, Loss: 0.02582948\n",
      "Epoch: 6570/30000, Loss: 0.02579790\n",
      "Epoch: 6580/30000, Loss: 0.02575563\n",
      "Epoch: 6590/30000, Loss: 0.02570461\n",
      "Epoch: 6600/30000, Loss: 0.02564868\n",
      "Epoch: 6610/30000, Loss: 0.02558947\n",
      "Epoch: 6620/30000, Loss: 0.02552816\n",
      "Epoch: 6630/30000, Loss: 0.02546586\n",
      "Epoch: 6640/30000, Loss: 0.02540326\n",
      "Epoch: 6650/30000, Loss: 0.02534080\n",
      "Epoch: 6660/30000, Loss: 0.02527876\n",
      "Epoch: 6670/30000, Loss: 0.02521731\n",
      "Epoch: 6680/30000, Loss: 0.02515656\n",
      "Epoch: 6690/30000, Loss: 0.02509657\n",
      "Epoch: 6700/30000, Loss: 0.02503736\n",
      "Epoch: 6710/30000, Loss: 0.02497894\n",
      "Epoch: 6720/30000, Loss: 0.02492131\n",
      "Epoch: 6730/30000, Loss: 0.02486446\n",
      "Epoch: 6740/30000, Loss: 0.02480836\n",
      "Epoch: 6750/30000, Loss: 0.02475298\n",
      "Epoch: 6760/30000, Loss: 0.02469832\n",
      "Epoch: 6770/30000, Loss: 0.02464433\n",
      "Epoch: 6780/30000, Loss: 0.02459100\n",
      "Epoch: 6790/30000, Loss: 0.02453830\n",
      "Epoch: 6800/30000, Loss: 0.02448620\n",
      "Epoch: 6810/30000, Loss: 0.02443468\n",
      "Epoch: 6820/30000, Loss: 0.02438373\n",
      "Epoch: 6830/30000, Loss: 0.02433331\n",
      "Epoch: 6840/30000, Loss: 0.02428341\n",
      "Epoch: 6850/30000, Loss: 0.02423402\n",
      "Epoch: 6860/30000, Loss: 0.02418510\n",
      "Epoch: 6870/30000, Loss: 0.02413664\n",
      "Epoch: 6880/30000, Loss: 0.02408863\n",
      "Epoch: 6890/30000, Loss: 0.02404106\n",
      "Epoch: 6900/30000, Loss: 0.02399390\n",
      "Epoch: 6910/30000, Loss: 0.02394715\n",
      "Epoch: 6920/30000, Loss: 0.02390078\n",
      "Epoch: 6930/30000, Loss: 0.02385480\n",
      "Epoch: 6940/30000, Loss: 0.02380918\n",
      "Epoch: 6950/30000, Loss: 0.02376392\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 6960/30000, Loss: 0.02371900\n",
      "Epoch: 6970/30000, Loss: 0.02367442\n",
      "Epoch: 6980/30000, Loss: 0.02363016\n",
      "Epoch: 6990/30000, Loss: 0.02358621\n",
      "Epoch: 7000/30000, Loss: 0.02354258\n",
      "Epoch: 7010/30000, Loss: 0.02349924\n",
      "Epoch: 7020/30000, Loss: 0.02345620\n",
      "Epoch: 7030/30000, Loss: 0.02341344\n",
      "Epoch: 7040/30000, Loss: 0.02337095\n",
      "Epoch: 7050/30000, Loss: 0.02332874\n",
      "Epoch: 7060/30000, Loss: 0.02328679\n",
      "Epoch: 7070/30000, Loss: 0.02324509\n",
      "Epoch: 7080/30000, Loss: 0.02320365\n",
      "Epoch: 7090/30000, Loss: 0.02316245\n",
      "Epoch: 7100/30000, Loss: 0.02312149\n",
      "Epoch: 7110/30000, Loss: 0.02308076\n",
      "Epoch: 7120/30000, Loss: 0.02304026\n",
      "Epoch: 7130/30000, Loss: 0.02299999\n",
      "Epoch: 7140/30000, Loss: 0.02295993\n",
      "Epoch: 7150/30000, Loss: 0.02292010\n",
      "Epoch: 7160/30000, Loss: 0.02288046\n",
      "Epoch: 7170/30000, Loss: 0.02284104\n",
      "Epoch: 7180/30000, Loss: 0.02280181\n",
      "Epoch: 7190/30000, Loss: 0.02276279\n",
      "Epoch: 7200/30000, Loss: 0.02272395\n",
      "Epoch: 7210/30000, Loss: 0.02268531\n",
      "Epoch: 7220/30000, Loss: 0.02264685\n",
      "Epoch: 7230/30000, Loss: 0.02260858\n",
      "Epoch: 7240/30000, Loss: 0.02257049\n",
      "Epoch: 7250/30000, Loss: 0.02253257\n",
      "Epoch: 7260/30000, Loss: 0.02249482\n",
      "Epoch: 7270/30000, Loss: 0.02245725\n",
      "Epoch: 7280/30000, Loss: 0.02241984\n",
      "Epoch: 7290/30000, Loss: 0.02238259\n",
      "Epoch: 7300/30000, Loss: 0.02234551\n",
      "Epoch: 7310/30000, Loss: 0.02230859\n",
      "Epoch: 7320/30000, Loss: 0.02227182\n",
      "Epoch: 7330/30000, Loss: 0.02223521\n",
      "Epoch: 7340/30000, Loss: 0.02219874\n",
      "Epoch: 7350/30000, Loss: 0.02216243\n",
      "Epoch: 7360/30000, Loss: 0.02212626\n",
      "Epoch: 7370/30000, Loss: 0.02209024\n",
      "Epoch: 7380/30000, Loss: 0.02205435\n",
      "Epoch: 7390/30000, Loss: 0.02201861\n",
      "Epoch: 7400/30000, Loss: 0.02198301\n",
      "Epoch: 7410/30000, Loss: 0.02194754\n",
      "Epoch: 7420/30000, Loss: 0.02191220\n",
      "Epoch: 7430/30000, Loss: 0.02187700\n",
      "Epoch: 7440/30000, Loss: 0.02184192\n",
      "Epoch: 7450/30000, Loss: 0.02180698\n",
      "Epoch: 7460/30000, Loss: 0.02177216\n",
      "Epoch: 7470/30000, Loss: 0.02173747\n",
      "Epoch: 7480/30000, Loss: 0.02170289\n",
      "Epoch: 7490/30000, Loss: 0.02166844\n",
      "Epoch: 7500/30000, Loss: 0.02163411\n",
      "Epoch: 7510/30000, Loss: 0.02159989\n",
      "Epoch: 7520/30000, Loss: 0.02156580\n",
      "Epoch: 7530/30000, Loss: 0.02153181\n",
      "Epoch: 7540/30000, Loss: 0.02149795\n",
      "Epoch: 7550/30000, Loss: 0.02146419\n",
      "Epoch: 7560/30000, Loss: 0.02143054\n",
      "Epoch: 7570/30000, Loss: 0.02139701\n",
      "Epoch: 7580/30000, Loss: 0.02136358\n",
      "Epoch: 7590/30000, Loss: 0.02133025\n",
      "Epoch: 7600/30000, Loss: 0.02129704\n",
      "Epoch: 7610/30000, Loss: 0.02126392\n",
      "Epoch: 7620/30000, Loss: 0.02123091\n",
      "Epoch: 7630/30000, Loss: 0.02119800\n",
      "Epoch: 7640/30000, Loss: 0.02116520\n",
      "Epoch: 7650/30000, Loss: 0.02113249\n",
      "Epoch: 7660/30000, Loss: 0.02109988\n",
      "Epoch: 7670/30000, Loss: 0.02106736\n",
      "Epoch: 7680/30000, Loss: 0.02103494\n",
      "Epoch: 7690/30000, Loss: 0.02100262\n",
      "Epoch: 7700/30000, Loss: 0.02097039\n",
      "Epoch: 7710/30000, Loss: 0.02093826\n",
      "Epoch: 7720/30000, Loss: 0.02090621\n",
      "Epoch: 7730/30000, Loss: 0.02087426\n",
      "Epoch: 7740/30000, Loss: 0.02084240\n",
      "Epoch: 7750/30000, Loss: 0.02081062\n",
      "Epoch: 7760/30000, Loss: 0.02077894\n",
      "Epoch: 7770/30000, Loss: 0.02074734\n",
      "Epoch: 7780/30000, Loss: 0.02071583\n",
      "Epoch: 7790/30000, Loss: 0.02068440\n",
      "Epoch: 7800/30000, Loss: 0.02065306\n",
      "Epoch: 7810/30000, Loss: 0.02062180\n",
      "Epoch: 7820/30000, Loss: 0.02059063\n",
      "Epoch: 7830/30000, Loss: 0.02055953\n",
      "Epoch: 7840/30000, Loss: 0.02052853\n",
      "Epoch: 7850/30000, Loss: 0.02049759\n",
      "Epoch: 7860/30000, Loss: 0.02046674\n",
      "Epoch: 7870/30000, Loss: 0.02043597\n",
      "Epoch: 7880/30000, Loss: 0.02040528\n",
      "Epoch: 7890/30000, Loss: 0.02037467\n",
      "Epoch: 7900/30000, Loss: 0.02034413\n",
      "Epoch: 7910/30000, Loss: 0.02031367\n",
      "Epoch: 7920/30000, Loss: 0.02028328\n",
      "Epoch: 7930/30000, Loss: 0.02025297\n",
      "Epoch: 7940/30000, Loss: 0.02022273\n",
      "Epoch: 7950/30000, Loss: 0.02019257\n",
      "Epoch: 7960/30000, Loss: 0.02016248\n",
      "Epoch: 7970/30000, Loss: 0.02013246\n",
      "Epoch: 7980/30000, Loss: 0.02010251\n",
      "Epoch: 7990/30000, Loss: 0.02007264\n",
      "Epoch: 8000/30000, Loss: 0.02004283\n",
      "Epoch: 8010/30000, Loss: 0.02001310\n",
      "Epoch: 8020/30000, Loss: 0.01998344\n",
      "Epoch: 8030/30000, Loss: 0.01995384\n",
      "Epoch: 8040/30000, Loss: 0.01992431\n",
      "Epoch: 8050/30000, Loss: 0.01989486\n",
      "Epoch: 8060/30000, Loss: 0.01986546\n",
      "Epoch: 8070/30000, Loss: 0.01983614\n",
      "Epoch: 8080/30000, Loss: 0.01980687\n",
      "Epoch: 8090/30000, Loss: 0.01977768\n",
      "Epoch: 8100/30000, Loss: 0.01974855\n",
      "Epoch: 8110/30000, Loss: 0.01971949\n",
      "Epoch: 8120/30000, Loss: 0.01969049\n",
      "Epoch: 8130/30000, Loss: 0.01966155\n",
      "Epoch: 8140/30000, Loss: 0.01963268\n",
      "Epoch: 8150/30000, Loss: 0.01960387\n",
      "Epoch: 8160/30000, Loss: 0.01957512\n",
      "Epoch: 8170/30000, Loss: 0.01954643\n",
      "Epoch: 8180/30000, Loss: 0.01951781\n",
      "Epoch: 8190/30000, Loss: 0.01948924\n",
      "Epoch: 8200/30000, Loss: 0.01946074\n",
      "Epoch: 8210/30000, Loss: 0.01943230\n",
      "Epoch: 8220/30000, Loss: 0.01940392\n",
      "Epoch: 8230/30000, Loss: 0.01937559\n",
      "Epoch: 8240/30000, Loss: 0.01934732\n",
      "Epoch: 8250/30000, Loss: 0.01931912\n",
      "Epoch: 8260/30000, Loss: 0.01929097\n",
      "Epoch: 8270/30000, Loss: 0.01926288\n",
      "Epoch: 8280/30000, Loss: 0.01923484\n",
      "Epoch: 8290/30000, Loss: 0.01920686\n",
      "Epoch: 8300/30000, Loss: 0.01917894\n",
      "Epoch: 8310/30000, Loss: 0.01915108\n",
      "Epoch: 8320/30000, Loss: 0.01912327\n",
      "Epoch: 8330/30000, Loss: 0.01909552\n",
      "Epoch: 8340/30000, Loss: 0.01906782\n",
      "Epoch: 8350/30000, Loss: 0.01904017\n",
      "Epoch: 8360/30000, Loss: 0.01901259\n",
      "Epoch: 8370/30000, Loss: 0.01898505\n",
      "Epoch: 8380/30000, Loss: 0.01895757\n",
      "Epoch: 8390/30000, Loss: 0.01893014\n",
      "Epoch: 8400/30000, Loss: 0.01890276\n",
      "Epoch: 8410/30000, Loss: 0.01887544\n",
      "Epoch: 8420/30000, Loss: 0.01884817\n",
      "Epoch: 8430/30000, Loss: 0.01882095\n",
      "Epoch: 8440/30000, Loss: 0.01879378\n",
      "Epoch: 8450/30000, Loss: 0.01876667\n",
      "Epoch: 8460/30000, Loss: 0.01873960\n",
      "Epoch: 8470/30000, Loss: 0.01871259\n",
      "Epoch: 8480/30000, Loss: 0.01868563\n",
      "Epoch: 8490/30000, Loss: 0.01865871\n",
      "Epoch: 8500/30000, Loss: 0.01863185\n",
      "Epoch: 8510/30000, Loss: 0.01860504\n",
      "Epoch: 8520/30000, Loss: 0.01857827\n",
      "Epoch: 8530/30000, Loss: 0.01855156\n",
      "Epoch: 8540/30000, Loss: 0.01852489\n",
      "Epoch: 8550/30000, Loss: 0.01849828\n",
      "Epoch: 8560/30000, Loss: 0.01847171\n",
      "Epoch: 8570/30000, Loss: 0.01844518\n",
      "Epoch: 8580/30000, Loss: 0.01841871\n",
      "Epoch: 8590/30000, Loss: 0.01839228\n",
      "Epoch: 8600/30000, Loss: 0.01836591\n",
      "Epoch: 8610/30000, Loss: 0.01833957\n",
      "Epoch: 8620/30000, Loss: 0.01831329\n",
      "Epoch: 8630/30000, Loss: 0.01828705\n",
      "Epoch: 8640/30000, Loss: 0.01826086\n",
      "Epoch: 8650/30000, Loss: 0.01823471\n",
      "Epoch: 8660/30000, Loss: 0.01820861\n",
      "Epoch: 8670/30000, Loss: 0.01818256\n",
      "Epoch: 8680/30000, Loss: 0.01815655\n",
      "Epoch: 8690/30000, Loss: 0.01813058\n",
      "Epoch: 8700/30000, Loss: 0.01810466\n",
      "Epoch: 8710/30000, Loss: 0.01807879\n",
      "Epoch: 8720/30000, Loss: 0.01805296\n",
      "Epoch: 8730/30000, Loss: 0.01802717\n",
      "Epoch: 8740/30000, Loss: 0.01800143\n",
      "Epoch: 8750/30000, Loss: 0.01797573\n",
      "Epoch: 8760/30000, Loss: 0.01795008\n",
      "Epoch: 8770/30000, Loss: 0.01792446\n",
      "Epoch: 8780/30000, Loss: 0.01789890\n",
      "Epoch: 8790/30000, Loss: 0.01787337\n",
      "Epoch: 8800/30000, Loss: 0.01784789\n",
      "Epoch: 8810/30000, Loss: 0.01782245\n",
      "Epoch: 8820/30000, Loss: 0.01779705\n",
      "Epoch: 8830/30000, Loss: 0.01777169\n",
      "Epoch: 8840/30000, Loss: 0.01774638\n",
      "Epoch: 8850/30000, Loss: 0.01772111\n",
      "Epoch: 8860/30000, Loss: 0.01769588\n",
      "Epoch: 8870/30000, Loss: 0.01767069\n",
      "Epoch: 8880/30000, Loss: 0.01764554\n",
      "Epoch: 8890/30000, Loss: 0.01762043\n",
      "Epoch: 8900/30000, Loss: 0.01759536\n",
      "Epoch: 8910/30000, Loss: 0.01757034\n",
      "Epoch: 8920/30000, Loss: 0.01754535\n",
      "Epoch: 8930/30000, Loss: 0.01752041\n",
      "Epoch: 8940/30000, Loss: 0.01749550\n",
      "Epoch: 8950/30000, Loss: 0.01747064\n",
      "Epoch: 8960/30000, Loss: 0.01744581\n",
      "Epoch: 8970/30000, Loss: 0.01742103\n",
      "Epoch: 8980/30000, Loss: 0.01739628\n",
      "Epoch: 8990/30000, Loss: 0.01737157\n",
      "Epoch: 9000/30000, Loss: 0.01734691\n",
      "Epoch: 9010/30000, Loss: 0.01732228\n",
      "Epoch: 9020/30000, Loss: 0.01729769\n",
      "Epoch: 9030/30000, Loss: 0.01727313\n",
      "Epoch: 9040/30000, Loss: 0.01724862\n",
      "Epoch: 9050/30000, Loss: 0.01722415\n",
      "Epoch: 9060/30000, Loss: 0.01719971\n",
      "Epoch: 9070/30000, Loss: 0.01717531\n",
      "Epoch: 9080/30000, Loss: 0.01715095\n",
      "Epoch: 9090/30000, Loss: 0.01712663\n",
      "Epoch: 9100/30000, Loss: 0.01710234\n",
      "Epoch: 9110/30000, Loss: 0.01707809\n",
      "Epoch: 9120/30000, Loss: 0.01705388\n",
      "Epoch: 9130/30000, Loss: 0.01702971\n",
      "Epoch: 9140/30000, Loss: 0.01700557\n",
      "Epoch: 9150/30000, Loss: 0.01698147\n",
      "Epoch: 9160/30000, Loss: 0.01695741\n",
      "Epoch: 9170/30000, Loss: 0.01693338\n",
      "Epoch: 9180/30000, Loss: 0.01690939\n",
      "Epoch: 9190/30000, Loss: 0.01688544\n",
      "Epoch: 9200/30000, Loss: 0.01686152\n",
      "Epoch: 9210/30000, Loss: 0.01683764\n",
      "Epoch: 9220/30000, Loss: 0.01681379\n",
      "Epoch: 9230/30000, Loss: 0.01678998\n",
      "Epoch: 9240/30000, Loss: 0.01676620\n",
      "Epoch: 9250/30000, Loss: 0.01674246\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 9260/30000, Loss: 0.01671876\n",
      "Epoch: 9270/30000, Loss: 0.01669509\n",
      "Epoch: 9280/30000, Loss: 0.01667146\n",
      "Epoch: 9290/30000, Loss: 0.01664786\n",
      "Epoch: 9300/30000, Loss: 0.01662429\n",
      "Epoch: 9310/30000, Loss: 0.01660076\n",
      "Epoch: 9320/30000, Loss: 0.01657727\n",
      "Epoch: 9330/30000, Loss: 0.01655381\n",
      "Epoch: 9340/30000, Loss: 0.01653038\n",
      "Epoch: 9350/30000, Loss: 0.01650699\n",
      "Epoch: 9360/30000, Loss: 0.01648363\n",
      "Epoch: 9370/30000, Loss: 0.01646031\n",
      "Epoch: 9380/30000, Loss: 0.01643702\n",
      "Epoch: 9390/30000, Loss: 0.01641376\n",
      "Epoch: 9400/30000, Loss: 0.01639054\n",
      "Epoch: 9410/30000, Loss: 0.01636735\n",
      "Epoch: 9420/30000, Loss: 0.01634420\n",
      "Epoch: 9430/30000, Loss: 0.01632107\n",
      "Epoch: 9440/30000, Loss: 0.01629798\n",
      "Epoch: 9450/30000, Loss: 0.01627493\n",
      "Epoch: 9460/30000, Loss: 0.01625191\n",
      "Epoch: 9470/30000, Loss: 0.01622891\n",
      "Epoch: 9480/30000, Loss: 0.01620596\n",
      "Epoch: 9490/30000, Loss: 0.01618303\n",
      "Epoch: 9500/30000, Loss: 0.01616014\n",
      "Epoch: 9510/30000, Loss: 0.01613728\n",
      "Epoch: 9520/30000, Loss: 0.01611445\n",
      "Epoch: 9530/30000, Loss: 0.01609166\n",
      "Epoch: 9540/30000, Loss: 0.01606890\n",
      "Epoch: 9550/30000, Loss: 0.01604617\n",
      "Epoch: 9560/30000, Loss: 0.01602347\n",
      "Epoch: 9570/30000, Loss: 0.01600080\n",
      "Epoch: 9580/30000, Loss: 0.01597817\n",
      "Epoch: 9590/30000, Loss: 0.01595556\n",
      "Epoch: 9600/30000, Loss: 0.01593299\n",
      "Epoch: 9610/30000, Loss: 0.01591045\n",
      "Epoch: 9620/30000, Loss: 0.01588794\n",
      "Epoch: 9630/30000, Loss: 0.01586547\n",
      "Epoch: 9640/30000, Loss: 0.01584302\n",
      "Epoch: 9650/30000, Loss: 0.01582060\n",
      "Epoch: 9660/30000, Loss: 0.01579822\n",
      "Epoch: 9670/30000, Loss: 0.01577586\n",
      "Epoch: 9680/30000, Loss: 0.01575354\n",
      "Epoch: 9690/30000, Loss: 0.01573125\n",
      "Epoch: 9700/30000, Loss: 0.01570899\n",
      "Epoch: 9710/30000, Loss: 0.01568676\n",
      "Epoch: 9720/30000, Loss: 0.01566456\n",
      "Epoch: 9730/30000, Loss: 0.01564239\n",
      "Epoch: 9740/30000, Loss: 0.01562025\n",
      "Epoch: 9750/30000, Loss: 0.01559814\n",
      "Epoch: 9760/30000, Loss: 0.01557606\n",
      "Epoch: 9770/30000, Loss: 0.01555401\n",
      "Epoch: 9780/30000, Loss: 0.01553199\n",
      "Epoch: 9790/30000, Loss: 0.01551000\n",
      "Epoch: 9800/30000, Loss: 0.01548805\n",
      "Epoch: 9810/30000, Loss: 0.01546612\n",
      "Epoch: 9820/30000, Loss: 0.01544422\n",
      "Epoch: 9830/30000, Loss: 0.01542235\n",
      "Epoch: 9840/30000, Loss: 0.01540051\n",
      "Epoch: 9850/30000, Loss: 0.01537870\n",
      "Epoch: 9860/30000, Loss: 0.01535691\n",
      "Epoch: 9870/30000, Loss: 0.01533516\n",
      "Epoch: 9880/30000, Loss: 0.01531344\n",
      "Epoch: 9890/30000, Loss: 0.01529174\n",
      "Epoch: 9900/30000, Loss: 0.01527008\n",
      "Epoch: 9910/30000, Loss: 0.01524844\n",
      "Epoch: 9920/30000, Loss: 0.01522684\n",
      "Epoch: 9930/30000, Loss: 0.01520526\n",
      "Epoch: 9940/30000, Loss: 0.01518371\n",
      "Epoch: 9950/30000, Loss: 0.01516218\n",
      "Epoch: 9960/30000, Loss: 0.01514069\n",
      "Epoch: 9970/30000, Loss: 0.01511923\n",
      "Epoch: 9980/30000, Loss: 0.01509780\n",
      "Epoch: 9990/30000, Loss: 0.01507639\n",
      "Epoch: 10000/30000, Loss: 0.01505501\n",
      "Epoch: 10010/30000, Loss: 0.01503366\n",
      "Epoch: 10020/30000, Loss: 0.01501234\n",
      "Epoch: 10030/30000, Loss: 0.01499104\n",
      "Epoch: 10040/30000, Loss: 0.01496978\n",
      "Epoch: 10050/30000, Loss: 0.01494854\n",
      "Epoch: 10060/30000, Loss: 0.01492733\n",
      "Epoch: 10070/30000, Loss: 0.01490615\n",
      "Epoch: 10080/30000, Loss: 0.01488500\n",
      "Epoch: 10090/30000, Loss: 0.01486387\n",
      "Epoch: 10100/30000, Loss: 0.01484277\n",
      "Epoch: 10110/30000, Loss: 0.01482170\n",
      "Epoch: 10120/30000, Loss: 0.01480065\n",
      "Epoch: 10130/30000, Loss: 0.01477964\n",
      "Epoch: 10140/30000, Loss: 0.01475865\n",
      "Epoch: 10150/30000, Loss: 0.01473769\n",
      "Epoch: 10160/30000, Loss: 0.01471675\n",
      "Epoch: 10170/30000, Loss: 0.01469585\n",
      "Epoch: 10180/30000, Loss: 0.01467497\n",
      "Epoch: 10190/30000, Loss: 0.01465412\n",
      "Epoch: 10200/30000, Loss: 0.01463329\n",
      "Epoch: 10210/30000, Loss: 0.01461249\n",
      "Epoch: 10220/30000, Loss: 0.01459172\n",
      "Epoch: 10230/30000, Loss: 0.01457098\n",
      "Epoch: 10240/30000, Loss: 0.01455026\n",
      "Epoch: 10250/30000, Loss: 0.01452957\n",
      "Epoch: 10260/30000, Loss: 0.01450891\n",
      "Epoch: 10270/30000, Loss: 0.01448827\n",
      "Epoch: 10280/30000, Loss: 0.01446766\n",
      "Epoch: 10290/30000, Loss: 0.01444707\n",
      "Epoch: 10300/30000, Loss: 0.01442652\n",
      "Epoch: 10310/30000, Loss: 0.01440598\n",
      "Epoch: 10320/30000, Loss: 0.01438548\n",
      "Epoch: 10330/30000, Loss: 0.01436500\n",
      "Epoch: 10340/30000, Loss: 0.01434455\n",
      "Epoch: 10350/30000, Loss: 0.01432412\n",
      "Epoch: 10360/30000, Loss: 0.01430372\n",
      "Epoch: 10370/30000, Loss: 0.01428336\n",
      "Epoch: 10380/30000, Loss: 0.01426300\n",
      "Epoch: 10390/30000, Loss: 0.01424268\n",
      "Epoch: 10400/30000, Loss: 0.01422239\n",
      "Epoch: 10410/30000, Loss: 0.01420212\n",
      "Epoch: 10420/30000, Loss: 0.01418187\n",
      "Epoch: 10430/30000, Loss: 0.01416166\n",
      "Epoch: 10440/30000, Loss: 0.01414146\n",
      "Epoch: 10450/30000, Loss: 0.01412131\n",
      "Epoch: 10460/30000, Loss: 0.01410116\n",
      "Epoch: 10470/30000, Loss: 0.01408105\n",
      "Epoch: 10480/30000, Loss: 0.01406095\n",
      "Epoch: 10490/30000, Loss: 0.01404089\n",
      "Epoch: 10500/30000, Loss: 0.01402085\n",
      "Epoch: 10510/30000, Loss: 0.01400084\n",
      "Epoch: 10520/30000, Loss: 0.01398085\n",
      "Epoch: 10530/30000, Loss: 0.01396089\n",
      "Epoch: 10540/30000, Loss: 0.01394095\n",
      "Epoch: 10550/30000, Loss: 0.01392104\n",
      "Epoch: 10560/30000, Loss: 0.01390116\n",
      "Epoch: 10570/30000, Loss: 0.01388130\n",
      "Epoch: 10580/30000, Loss: 0.01386147\n",
      "Epoch: 10590/30000, Loss: 0.01384165\n",
      "Epoch: 10600/30000, Loss: 0.01382187\n",
      "Epoch: 10610/30000, Loss: 0.01380211\n",
      "Epoch: 10620/30000, Loss: 0.01378237\n",
      "Epoch: 10630/30000, Loss: 0.01376266\n",
      "Epoch: 10640/30000, Loss: 0.01374297\n",
      "Epoch: 10650/30000, Loss: 0.01372331\n",
      "Epoch: 10660/30000, Loss: 0.01370368\n",
      "Epoch: 10670/30000, Loss: 0.01368406\n",
      "Epoch: 10680/30000, Loss: 0.01366448\n",
      "Epoch: 10690/30000, Loss: 0.01364492\n",
      "Epoch: 10700/30000, Loss: 0.01362539\n",
      "Epoch: 10710/30000, Loss: 0.01360587\n",
      "Epoch: 10720/30000, Loss: 0.01358638\n",
      "Epoch: 10730/30000, Loss: 0.01356691\n",
      "Epoch: 10740/30000, Loss: 0.01354747\n",
      "Epoch: 10750/30000, Loss: 0.01352806\n",
      "Epoch: 10760/30000, Loss: 0.01350867\n",
      "Epoch: 10770/30000, Loss: 0.01348930\n",
      "Epoch: 10780/30000, Loss: 0.01346996\n",
      "Epoch: 10790/30000, Loss: 0.01345064\n",
      "Epoch: 10800/30000, Loss: 0.01343135\n",
      "Epoch: 10810/30000, Loss: 0.01341208\n",
      "Epoch: 10820/30000, Loss: 0.01339283\n",
      "Epoch: 10830/30000, Loss: 0.01337361\n",
      "Epoch: 10840/30000, Loss: 0.01335444\n",
      "Epoch: 10850/30000, Loss: 0.01333528\n",
      "Epoch: 10860/30000, Loss: 0.01331610\n",
      "Epoch: 10870/30000, Loss: 0.01329697\n",
      "Epoch: 10880/30000, Loss: 0.01327787\n",
      "Epoch: 10890/30000, Loss: 0.01325879\n",
      "Epoch: 10900/30000, Loss: 0.01323974\n",
      "Epoch: 10910/30000, Loss: 0.01322070\n",
      "Epoch: 10920/30000, Loss: 0.01320170\n",
      "Epoch: 10930/30000, Loss: 0.01318271\n",
      "Epoch: 10940/30000, Loss: 0.01316375\n",
      "Epoch: 10950/30000, Loss: 0.01314482\n",
      "Epoch: 10960/30000, Loss: 0.01312591\n",
      "Epoch: 10970/30000, Loss: 0.01310702\n",
      "Epoch: 10980/30000, Loss: 0.01308816\n",
      "Epoch: 10990/30000, Loss: 0.01306931\n",
      "Epoch: 11000/30000, Loss: 0.01305050\n",
      "Epoch: 11010/30000, Loss: 0.01303170\n",
      "Epoch: 11020/30000, Loss: 0.01301300\n",
      "Epoch: 11030/30000, Loss: 0.01299419\n",
      "Epoch: 11040/30000, Loss: 0.01297547\n",
      "Epoch: 11050/30000, Loss: 0.01295676\n",
      "Epoch: 11060/30000, Loss: 0.01293808\n",
      "Epoch: 11070/30000, Loss: 0.01291943\n",
      "Epoch: 11080/30000, Loss: 0.01290079\n",
      "Epoch: 11090/30000, Loss: 0.01288219\n",
      "Epoch: 11100/30000, Loss: 0.01286360\n",
      "Epoch: 11110/30000, Loss: 0.01284504\n",
      "Epoch: 11120/30000, Loss: 0.01282650\n",
      "Epoch: 11130/30000, Loss: 0.01280798\n",
      "Epoch: 11140/30000, Loss: 0.01278949\n",
      "Epoch: 11150/30000, Loss: 0.01277102\n",
      "Epoch: 11160/30000, Loss: 0.01275257\n",
      "Epoch: 11170/30000, Loss: 0.01273415\n",
      "Epoch: 11180/30000, Loss: 0.01271575\n",
      "Epoch: 11190/30000, Loss: 0.01269741\n",
      "Epoch: 11200/30000, Loss: 0.01267903\n",
      "Epoch: 11210/30000, Loss: 0.01266068\n",
      "Epoch: 11220/30000, Loss: 0.01264237\n",
      "Epoch: 11230/30000, Loss: 0.01262408\n",
      "Epoch: 11240/30000, Loss: 0.01260582\n",
      "Epoch: 11250/30000, Loss: 0.01258757\n",
      "Epoch: 11260/30000, Loss: 0.01256935\n",
      "Epoch: 11270/30000, Loss: 0.01255116\n",
      "Epoch: 11280/30000, Loss: 0.01253298\n",
      "Epoch: 11290/30000, Loss: 0.01251483\n",
      "Epoch: 11300/30000, Loss: 0.01249670\n",
      "Epoch: 11310/30000, Loss: 0.01247859\n",
      "Epoch: 11320/30000, Loss: 0.01246050\n",
      "Epoch: 11330/30000, Loss: 0.01244244\n",
      "Epoch: 11340/30000, Loss: 0.01242440\n",
      "Epoch: 11350/30000, Loss: 0.01240638\n",
      "Epoch: 11360/30000, Loss: 0.01238841\n",
      "Epoch: 11370/30000, Loss: 0.01237044\n",
      "Epoch: 11380/30000, Loss: 0.01235247\n",
      "Epoch: 11390/30000, Loss: 0.01233453\n",
      "Epoch: 11400/30000, Loss: 0.01231663\n",
      "Epoch: 11410/30000, Loss: 0.01229874\n",
      "Epoch: 11420/30000, Loss: 0.01228088\n",
      "Epoch: 11430/30000, Loss: 0.01226304\n",
      "Epoch: 11440/30000, Loss: 0.01224522\n",
      "Epoch: 11450/30000, Loss: 0.01222742\n",
      "Epoch: 11460/30000, Loss: 0.01220965\n",
      "Epoch: 11470/30000, Loss: 0.01219189\n",
      "Epoch: 11480/30000, Loss: 0.01217416\n",
      "Epoch: 11490/30000, Loss: 0.01215645\n",
      "Epoch: 11500/30000, Loss: 0.01213877\n",
      "Epoch: 11510/30000, Loss: 0.01212110\n",
      "Epoch: 11520/30000, Loss: 0.01210346\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 11530/30000, Loss: 0.01208584\n",
      "Epoch: 11540/30000, Loss: 0.01206824\n",
      "Epoch: 11550/30000, Loss: 0.01205067\n",
      "Epoch: 11560/30000, Loss: 0.01203310\n",
      "Epoch: 11570/30000, Loss: 0.01201558\n",
      "Epoch: 11580/30000, Loss: 0.01199806\n",
      "Epoch: 11590/30000, Loss: 0.01198056\n",
      "Epoch: 11600/30000, Loss: 0.01196309\n",
      "Epoch: 11610/30000, Loss: 0.01194564\n",
      "Epoch: 11620/30000, Loss: 0.01192822\n",
      "Epoch: 11630/30000, Loss: 0.01191081\n",
      "Epoch: 11640/30000, Loss: 0.01189343\n",
      "Epoch: 11650/30000, Loss: 0.01187606\n",
      "Epoch: 11660/30000, Loss: 0.01185872\n",
      "Epoch: 11670/30000, Loss: 0.01184140\n",
      "Epoch: 11680/30000, Loss: 0.01182411\n",
      "Epoch: 11690/30000, Loss: 0.01180683\n",
      "Epoch: 11700/30000, Loss: 0.01178957\n",
      "Epoch: 11710/30000, Loss: 0.01177234\n",
      "Epoch: 11720/30000, Loss: 0.01175513\n",
      "Epoch: 11730/30000, Loss: 0.01173799\n",
      "Epoch: 11740/30000, Loss: 0.01172081\n",
      "Epoch: 11750/30000, Loss: 0.01170363\n",
      "Epoch: 11760/30000, Loss: 0.01168649\n",
      "Epoch: 11770/30000, Loss: 0.01166938\n",
      "Epoch: 11780/30000, Loss: 0.01165229\n",
      "Epoch: 11790/30000, Loss: 0.01163523\n",
      "Epoch: 11800/30000, Loss: 0.01161819\n",
      "Epoch: 11810/30000, Loss: 0.01160116\n",
      "Epoch: 11820/30000, Loss: 0.01158416\n",
      "Epoch: 11830/30000, Loss: 0.01156718\n",
      "Epoch: 11840/30000, Loss: 0.01155022\n",
      "Epoch: 11850/30000, Loss: 0.01153328\n",
      "Epoch: 11860/30000, Loss: 0.01151637\n",
      "Epoch: 11870/30000, Loss: 0.01149947\n",
      "Epoch: 11880/30000, Loss: 0.01148259\n",
      "Epoch: 11890/30000, Loss: 0.01146574\n",
      "Epoch: 11900/30000, Loss: 0.01144890\n",
      "Epoch: 11910/30000, Loss: 0.01143218\n",
      "Epoch: 11920/30000, Loss: 0.01141532\n",
      "Epoch: 11930/30000, Loss: 0.01139854\n",
      "Epoch: 11940/30000, Loss: 0.01138178\n",
      "Epoch: 11950/30000, Loss: 0.01136505\n",
      "Epoch: 11960/30000, Loss: 0.01134834\n",
      "Epoch: 11970/30000, Loss: 0.01133165\n",
      "Epoch: 11980/30000, Loss: 0.01131498\n",
      "Epoch: 11990/30000, Loss: 0.01129833\n",
      "Epoch: 12000/30000, Loss: 0.01128170\n",
      "Epoch: 12010/30000, Loss: 0.01126510\n",
      "Epoch: 12020/30000, Loss: 0.01124851\n",
      "Epoch: 12030/30000, Loss: 0.01123194\n",
      "Epoch: 12040/30000, Loss: 0.01121540\n",
      "Epoch: 12050/30000, Loss: 0.01119888\n",
      "Epoch: 12060/30000, Loss: 0.01118237\n",
      "Epoch: 12070/30000, Loss: 0.01116589\n",
      "Epoch: 12080/30000, Loss: 0.01114942\n",
      "Epoch: 12090/30000, Loss: 0.01113298\n",
      "Epoch: 12100/30000, Loss: 0.01111663\n",
      "Epoch: 12110/30000, Loss: 0.01110020\n",
      "Epoch: 12120/30000, Loss: 0.01108379\n",
      "Epoch: 12130/30000, Loss: 0.01106742\n",
      "Epoch: 12140/30000, Loss: 0.01105108\n",
      "Epoch: 12150/30000, Loss: 0.01103475\n",
      "Epoch: 12160/30000, Loss: 0.01101845\n",
      "Epoch: 12170/30000, Loss: 0.01100217\n",
      "Epoch: 12180/30000, Loss: 0.01098591\n",
      "Epoch: 12190/30000, Loss: 0.01096967\n",
      "Epoch: 12200/30000, Loss: 0.01095345\n",
      "Epoch: 12210/30000, Loss: 0.01093725\n",
      "Epoch: 12220/30000, Loss: 0.01092107\n",
      "Epoch: 12230/30000, Loss: 0.01090491\n",
      "Epoch: 12240/30000, Loss: 0.01088877\n",
      "Epoch: 12250/30000, Loss: 0.01087265\n",
      "Epoch: 12260/30000, Loss: 0.01085656\n",
      "Epoch: 12270/30000, Loss: 0.01084048\n",
      "Epoch: 12280/30000, Loss: 0.01082451\n",
      "Epoch: 12290/30000, Loss: 0.01080840\n",
      "Epoch: 12300/30000, Loss: 0.01079237\n",
      "Epoch: 12310/30000, Loss: 0.01077636\n",
      "Epoch: 12320/30000, Loss: 0.01076038\n",
      "Epoch: 12330/30000, Loss: 0.01074442\n",
      "Epoch: 12340/30000, Loss: 0.01072848\n",
      "Epoch: 12350/30000, Loss: 0.01071256\n",
      "Epoch: 12360/30000, Loss: 0.01069666\n",
      "Epoch: 12370/30000, Loss: 0.01068077\n",
      "Epoch: 12380/30000, Loss: 0.01066491\n",
      "Epoch: 12390/30000, Loss: 0.01064907\n",
      "Epoch: 12400/30000, Loss: 0.01063325\n",
      "Epoch: 12410/30000, Loss: 0.01061745\n",
      "Epoch: 12420/30000, Loss: 0.01060166\n",
      "Epoch: 12430/30000, Loss: 0.01058590\n",
      "Epoch: 12440/30000, Loss: 0.01057016\n",
      "Epoch: 12450/30000, Loss: 0.01055444\n",
      "Epoch: 12460/30000, Loss: 0.01053873\n",
      "Epoch: 12470/30000, Loss: 0.01052317\n",
      "Epoch: 12480/30000, Loss: 0.01050738\n",
      "Epoch: 12490/30000, Loss: 0.01049175\n",
      "Epoch: 12500/30000, Loss: 0.01047612\n",
      "Epoch: 12510/30000, Loss: 0.01046051\n",
      "Epoch: 12520/30000, Loss: 0.01044492\n",
      "Epoch: 12530/30000, Loss: 0.01042935\n",
      "Epoch: 12540/30000, Loss: 0.01041381\n",
      "Epoch: 12550/30000, Loss: 0.01039828\n",
      "Epoch: 12560/30000, Loss: 0.01038277\n",
      "Epoch: 12570/30000, Loss: 0.01036728\n",
      "Epoch: 12580/30000, Loss: 0.01035181\n",
      "Epoch: 12590/30000, Loss: 0.01033636\n",
      "Epoch: 12600/30000, Loss: 0.01032092\n",
      "Epoch: 12610/30000, Loss: 0.01030551\n",
      "Epoch: 12620/30000, Loss: 0.01029012\n",
      "Epoch: 12630/30000, Loss: 0.01027475\n",
      "Epoch: 12640/30000, Loss: 0.01025947\n",
      "Epoch: 12650/30000, Loss: 0.01024406\n",
      "Epoch: 12660/30000, Loss: 0.01022874\n",
      "Epoch: 12670/30000, Loss: 0.01021344\n",
      "Epoch: 12680/30000, Loss: 0.01019816\n",
      "Epoch: 12690/30000, Loss: 0.01018290\n",
      "Epoch: 12700/30000, Loss: 0.01016766\n",
      "Epoch: 12710/30000, Loss: 0.01015244\n",
      "Epoch: 12720/30000, Loss: 0.01013724\n",
      "Epoch: 12730/30000, Loss: 0.01012206\n",
      "Epoch: 12740/30000, Loss: 0.01010689\n",
      "Epoch: 12750/30000, Loss: 0.01009175\n",
      "Epoch: 12760/30000, Loss: 0.01007662\n",
      "Epoch: 12770/30000, Loss: 0.01006152\n",
      "Epoch: 12780/30000, Loss: 0.01004643\n",
      "Epoch: 12790/30000, Loss: 0.01003136\n",
      "Epoch: 12800/30000, Loss: 0.01001636\n",
      "Epoch: 12810/30000, Loss: 0.01000133\n",
      "Epoch: 12820/30000, Loss: 0.00998627\n",
      "Epoch: 12830/30000, Loss: 0.00997127\n",
      "Epoch: 12840/30000, Loss: 0.00995630\n",
      "Epoch: 12850/30000, Loss: 0.00994134\n",
      "Epoch: 12860/30000, Loss: 0.00992641\n",
      "Epoch: 12870/30000, Loss: 0.00991149\n",
      "Epoch: 12880/30000, Loss: 0.00989659\n",
      "Epoch: 12890/30000, Loss: 0.00988171\n",
      "Epoch: 12900/30000, Loss: 0.00986685\n",
      "Epoch: 12910/30000, Loss: 0.00985200\n",
      "Epoch: 12920/30000, Loss: 0.00983718\n",
      "Epoch: 12930/30000, Loss: 0.00982237\n",
      "Epoch: 12940/30000, Loss: 0.00980759\n",
      "Epoch: 12950/30000, Loss: 0.00979282\n",
      "Epoch: 12960/30000, Loss: 0.00977807\n",
      "Epoch: 12970/30000, Loss: 0.00976334\n",
      "Epoch: 12980/30000, Loss: 0.00974878\n",
      "Epoch: 12990/30000, Loss: 0.00973393\n",
      "Epoch: 13000/30000, Loss: 0.00971925\n",
      "Epoch: 13010/30000, Loss: 0.00970459\n",
      "Epoch: 13020/30000, Loss: 0.00968996\n",
      "Epoch: 13030/30000, Loss: 0.00967533\n",
      "Epoch: 13040/30000, Loss: 0.00966073\n",
      "Epoch: 13050/30000, Loss: 0.00964615\n",
      "Epoch: 13060/30000, Loss: 0.00963158\n",
      "Epoch: 13070/30000, Loss: 0.00961703\n",
      "Epoch: 13080/30000, Loss: 0.00960251\n",
      "Epoch: 13090/30000, Loss: 0.00958799\n",
      "Epoch: 13100/30000, Loss: 0.00957350\n",
      "Epoch: 13110/30000, Loss: 0.00955903\n",
      "Epoch: 13120/30000, Loss: 0.00954457\n",
      "Epoch: 13130/30000, Loss: 0.00953014\n",
      "Epoch: 13140/30000, Loss: 0.00951572\n",
      "Epoch: 13150/30000, Loss: 0.00950132\n",
      "Epoch: 13160/30000, Loss: 0.00948693\n",
      "Epoch: 13170/30000, Loss: 0.00947257\n",
      "Epoch: 13180/30000, Loss: 0.00945831\n",
      "Epoch: 13190/30000, Loss: 0.00944396\n",
      "Epoch: 13200/30000, Loss: 0.00942961\n",
      "Epoch: 13210/30000, Loss: 0.00941530\n",
      "Epoch: 13220/30000, Loss: 0.00940102\n",
      "Epoch: 13230/30000, Loss: 0.00938676\n",
      "Epoch: 13240/30000, Loss: 0.00937252\n",
      "Epoch: 13250/30000, Loss: 0.00935831\n",
      "Epoch: 13260/30000, Loss: 0.00934410\n",
      "Epoch: 13270/30000, Loss: 0.00932992\n",
      "Epoch: 13280/30000, Loss: 0.00931576\n",
      "Epoch: 13290/30000, Loss: 0.00930161\n",
      "Epoch: 13300/30000, Loss: 0.00928748\n",
      "Epoch: 13310/30000, Loss: 0.00927337\n",
      "Epoch: 13320/30000, Loss: 0.00925927\n",
      "Epoch: 13330/30000, Loss: 0.00924520\n",
      "Epoch: 13340/30000, Loss: 0.00923114\n",
      "Epoch: 13350/30000, Loss: 0.00921710\n",
      "Epoch: 13360/30000, Loss: 0.00920308\n",
      "Epoch: 13370/30000, Loss: 0.00918907\n",
      "Epoch: 13380/30000, Loss: 0.00917515\n",
      "Epoch: 13390/30000, Loss: 0.00916120\n",
      "Epoch: 13400/30000, Loss: 0.00914718\n",
      "Epoch: 13410/30000, Loss: 0.00913324\n",
      "Epoch: 13420/30000, Loss: 0.00911932\n",
      "Epoch: 13430/30000, Loss: 0.00910542\n",
      "Epoch: 13440/30000, Loss: 0.00909154\n",
      "Epoch: 13450/30000, Loss: 0.00907767\n",
      "Epoch: 13460/30000, Loss: 0.00906383\n",
      "Epoch: 13470/30000, Loss: 0.00905000\n",
      "Epoch: 13480/30000, Loss: 0.00903619\n",
      "Epoch: 13490/30000, Loss: 0.00902240\n",
      "Epoch: 13500/30000, Loss: 0.00900863\n",
      "Epoch: 13510/30000, Loss: 0.00899487\n",
      "Epoch: 13520/30000, Loss: 0.00898113\n",
      "Epoch: 13530/30000, Loss: 0.00896741\n",
      "Epoch: 13540/30000, Loss: 0.00895370\n",
      "Epoch: 13550/30000, Loss: 0.00894001\n",
      "Epoch: 13560/30000, Loss: 0.00892635\n",
      "Epoch: 13570/30000, Loss: 0.00891269\n",
      "Epoch: 13580/30000, Loss: 0.00889908\n",
      "Epoch: 13590/30000, Loss: 0.00888545\n",
      "Epoch: 13600/30000, Loss: 0.00887185\n",
      "Epoch: 13610/30000, Loss: 0.00885827\n",
      "Epoch: 13620/30000, Loss: 0.00884469\n",
      "Epoch: 13630/30000, Loss: 0.00883114\n",
      "Epoch: 13640/30000, Loss: 0.00881761\n",
      "Epoch: 13650/30000, Loss: 0.00880410\n",
      "Epoch: 13660/30000, Loss: 0.00879060\n",
      "Epoch: 13670/30000, Loss: 0.00877712\n",
      "Epoch: 13680/30000, Loss: 0.00876366\n",
      "Epoch: 13690/30000, Loss: 0.00875022\n",
      "Epoch: 13700/30000, Loss: 0.00873679\n",
      "Epoch: 13710/30000, Loss: 0.00872338\n",
      "Epoch: 13720/30000, Loss: 0.00870999\n",
      "Epoch: 13730/30000, Loss: 0.00869661\n",
      "Epoch: 13740/30000, Loss: 0.00868325\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 13750/30000, Loss: 0.00866991\n",
      "Epoch: 13760/30000, Loss: 0.00865659\n",
      "Epoch: 13770/30000, Loss: 0.00864328\n",
      "Epoch: 13780/30000, Loss: 0.00863025\n",
      "Epoch: 13790/30000, Loss: 0.00861674\n",
      "Epoch: 13800/30000, Loss: 0.00860348\n",
      "Epoch: 13810/30000, Loss: 0.00859023\n",
      "Epoch: 13820/30000, Loss: 0.00857701\n",
      "Epoch: 13830/30000, Loss: 0.00856380\n",
      "Epoch: 13840/30000, Loss: 0.00855061\n",
      "Epoch: 13850/30000, Loss: 0.00853744\n",
      "Epoch: 13860/30000, Loss: 0.00852428\n",
      "Epoch: 13870/30000, Loss: 0.00851115\n",
      "Epoch: 13880/30000, Loss: 0.00849803\n",
      "Epoch: 13890/30000, Loss: 0.00848493\n",
      "Epoch: 13900/30000, Loss: 0.00847184\n",
      "Epoch: 13910/30000, Loss: 0.00845877\n",
      "Epoch: 13920/30000, Loss: 0.00844572\n",
      "Epoch: 13930/30000, Loss: 0.00843268\n",
      "Epoch: 13940/30000, Loss: 0.00841966\n",
      "Epoch: 13950/30000, Loss: 0.00840666\n",
      "Epoch: 13960/30000, Loss: 0.00839367\n",
      "Epoch: 13970/30000, Loss: 0.00838070\n",
      "Epoch: 13980/30000, Loss: 0.00836775\n",
      "Epoch: 13990/30000, Loss: 0.00835481\n",
      "Epoch: 14000/30000, Loss: 0.00834190\n",
      "Epoch: 14010/30000, Loss: 0.00832914\n",
      "Epoch: 14020/30000, Loss: 0.00831616\n",
      "Epoch: 14030/30000, Loss: 0.00830326\n",
      "Epoch: 14040/30000, Loss: 0.00829040\n",
      "Epoch: 14050/30000, Loss: 0.00827755\n",
      "Epoch: 14060/30000, Loss: 0.00826473\n",
      "Epoch: 14070/30000, Loss: 0.00825193\n",
      "Epoch: 14080/30000, Loss: 0.00823914\n",
      "Epoch: 14090/30000, Loss: 0.00822637\n",
      "Epoch: 14100/30000, Loss: 0.00821362\n",
      "Epoch: 14110/30000, Loss: 0.00820089\n",
      "Epoch: 14120/30000, Loss: 0.00818817\n",
      "Epoch: 14130/30000, Loss: 0.00817546\n",
      "Epoch: 14140/30000, Loss: 0.00816277\n",
      "Epoch: 14150/30000, Loss: 0.00815010\n",
      "Epoch: 14160/30000, Loss: 0.00813745\n",
      "Epoch: 14170/30000, Loss: 0.00812481\n",
      "Epoch: 14180/30000, Loss: 0.00811219\n",
      "Epoch: 14190/30000, Loss: 0.00809958\n",
      "Epoch: 14200/30000, Loss: 0.00808699\n",
      "Epoch: 14210/30000, Loss: 0.00807442\n",
      "Epoch: 14220/30000, Loss: 0.00806206\n",
      "Epoch: 14230/30000, Loss: 0.00804934\n",
      "Epoch: 14240/30000, Loss: 0.00803682\n",
      "Epoch: 14250/30000, Loss: 0.00802430\n",
      "Epoch: 14260/30000, Loss: 0.00801181\n",
      "Epoch: 14270/30000, Loss: 0.00799933\n",
      "Epoch: 14280/30000, Loss: 0.00798687\n",
      "Epoch: 14290/30000, Loss: 0.00797443\n",
      "Epoch: 14300/30000, Loss: 0.00796200\n",
      "Epoch: 14310/30000, Loss: 0.00794959\n",
      "Epoch: 14320/30000, Loss: 0.00793720\n",
      "Epoch: 14330/30000, Loss: 0.00792482\n",
      "Epoch: 14340/30000, Loss: 0.00791246\n",
      "Epoch: 14350/30000, Loss: 0.00790011\n",
      "Epoch: 14360/30000, Loss: 0.00788778\n",
      "Epoch: 14370/30000, Loss: 0.00787546\n",
      "Epoch: 14380/30000, Loss: 0.00786317\n",
      "Epoch: 14390/30000, Loss: 0.00785089\n",
      "Epoch: 14400/30000, Loss: 0.00783862\n",
      "Epoch: 14410/30000, Loss: 0.00782637\n",
      "Epoch: 14420/30000, Loss: 0.00781414\n",
      "Epoch: 14430/30000, Loss: 0.00780208\n",
      "Epoch: 14440/30000, Loss: 0.00778979\n",
      "Epoch: 14450/30000, Loss: 0.00777756\n",
      "Epoch: 14460/30000, Loss: 0.00776537\n",
      "Epoch: 14470/30000, Loss: 0.00775321\n",
      "Epoch: 14480/30000, Loss: 0.00774107\n",
      "Epoch: 14490/30000, Loss: 0.00772895\n",
      "Epoch: 14500/30000, Loss: 0.00771684\n",
      "Epoch: 14510/30000, Loss: 0.00770475\n",
      "Epoch: 14520/30000, Loss: 0.00769268\n",
      "Epoch: 14530/30000, Loss: 0.00768062\n",
      "Epoch: 14540/30000, Loss: 0.00766858\n",
      "Epoch: 14550/30000, Loss: 0.00765655\n",
      "Epoch: 14560/30000, Loss: 0.00764454\n",
      "Epoch: 14570/30000, Loss: 0.00763254\n",
      "Epoch: 14580/30000, Loss: 0.00762056\n",
      "Epoch: 14590/30000, Loss: 0.00760860\n",
      "Epoch: 14600/30000, Loss: 0.00759665\n",
      "Epoch: 14610/30000, Loss: 0.00758471\n",
      "Epoch: 14620/30000, Loss: 0.00757279\n",
      "Epoch: 14630/30000, Loss: 0.00756089\n",
      "Epoch: 14640/30000, Loss: 0.00754901\n",
      "Epoch: 14650/30000, Loss: 0.00753739\n",
      "Epoch: 14660/30000, Loss: 0.00752529\n",
      "Epoch: 14670/30000, Loss: 0.00751344\n",
      "Epoch: 14680/30000, Loss: 0.00750162\n",
      "Epoch: 14690/30000, Loss: 0.00748981\n",
      "Epoch: 14700/30000, Loss: 0.00747802\n",
      "Epoch: 14710/30000, Loss: 0.00746624\n",
      "Epoch: 14720/30000, Loss: 0.00745448\n",
      "Epoch: 14730/30000, Loss: 0.00744273\n",
      "Epoch: 14740/30000, Loss: 0.00743100\n",
      "Epoch: 14750/30000, Loss: 0.00741928\n",
      "Epoch: 14760/30000, Loss: 0.00740758\n",
      "Epoch: 14770/30000, Loss: 0.00739590\n",
      "Epoch: 14780/30000, Loss: 0.00738423\n",
      "Epoch: 14790/30000, Loss: 0.00737257\n",
      "Epoch: 14800/30000, Loss: 0.00736094\n",
      "Epoch: 14810/30000, Loss: 0.00734931\n",
      "Epoch: 14820/30000, Loss: 0.00733770\n",
      "Epoch: 14830/30000, Loss: 0.00732611\n",
      "Epoch: 14840/30000, Loss: 0.00731454\n",
      "Epoch: 14850/30000, Loss: 0.00730314\n",
      "Epoch: 14860/30000, Loss: 0.00729145\n",
      "Epoch: 14870/30000, Loss: 0.00727989\n",
      "Epoch: 14880/30000, Loss: 0.00726838\n",
      "Epoch: 14890/30000, Loss: 0.00725688\n",
      "Epoch: 14900/30000, Loss: 0.00724539\n",
      "Epoch: 14910/30000, Loss: 0.00723392\n",
      "Epoch: 14920/30000, Loss: 0.00722246\n",
      "Epoch: 14930/30000, Loss: 0.00721102\n",
      "Epoch: 14940/30000, Loss: 0.00719960\n",
      "Epoch: 14950/30000, Loss: 0.00718819\n",
      "Epoch: 14960/30000, Loss: 0.00717679\n",
      "Epoch: 14970/30000, Loss: 0.00716541\n",
      "Epoch: 14980/30000, Loss: 0.00715405\n",
      "Epoch: 14990/30000, Loss: 0.00714270\n",
      "Epoch: 15000/30000, Loss: 0.00713136\n",
      "Epoch: 15010/30000, Loss: 0.00712004\n",
      "Epoch: 15020/30000, Loss: 0.00710874\n",
      "Epoch: 15030/30000, Loss: 0.00709752\n",
      "Epoch: 15040/30000, Loss: 0.00708625\n",
      "Epoch: 15050/30000, Loss: 0.00707491\n",
      "Epoch: 15060/30000, Loss: 0.00706368\n",
      "Epoch: 15070/30000, Loss: 0.00705245\n",
      "Epoch: 15080/30000, Loss: 0.00704123\n",
      "Epoch: 15090/30000, Loss: 0.00703003\n",
      "Epoch: 15100/30000, Loss: 0.00701884\n",
      "Epoch: 15110/30000, Loss: 0.00700767\n",
      "Epoch: 15120/30000, Loss: 0.00699652\n",
      "Epoch: 15130/30000, Loss: 0.00698538\n",
      "Epoch: 15140/30000, Loss: 0.00697425\n",
      "Epoch: 15150/30000, Loss: 0.00696314\n",
      "Epoch: 15160/30000, Loss: 0.00695204\n",
      "Epoch: 15170/30000, Loss: 0.00694096\n",
      "Epoch: 15180/30000, Loss: 0.00692990\n",
      "Epoch: 15190/30000, Loss: 0.00691884\n",
      "Epoch: 15200/30000, Loss: 0.00690781\n",
      "Epoch: 15210/30000, Loss: 0.00689680\n",
      "Epoch: 15220/30000, Loss: 0.00688587\n",
      "Epoch: 15230/30000, Loss: 0.00687483\n",
      "Epoch: 15240/30000, Loss: 0.00686381\n",
      "Epoch: 15250/30000, Loss: 0.00685284\n",
      "Epoch: 15260/30000, Loss: 0.00684190\n",
      "Epoch: 15270/30000, Loss: 0.00683096\n",
      "Epoch: 15280/30000, Loss: 0.00682004\n",
      "Epoch: 15290/30000, Loss: 0.00680914\n",
      "Epoch: 15300/30000, Loss: 0.00679825\n",
      "Epoch: 15310/30000, Loss: 0.00678737\n",
      "Epoch: 15320/30000, Loss: 0.00677651\n",
      "Epoch: 15330/30000, Loss: 0.00676566\n",
      "Epoch: 15340/30000, Loss: 0.00675483\n",
      "Epoch: 15350/30000, Loss: 0.00674401\n",
      "Epoch: 15360/30000, Loss: 0.00673321\n",
      "Epoch: 15370/30000, Loss: 0.00672242\n",
      "Epoch: 15380/30000, Loss: 0.00671165\n",
      "Epoch: 15390/30000, Loss: 0.00670089\n",
      "Epoch: 15400/30000, Loss: 0.00669039\n",
      "Epoch: 15410/30000, Loss: 0.00667945\n",
      "Epoch: 15420/30000, Loss: 0.00666873\n",
      "Epoch: 15430/30000, Loss: 0.00665800\n",
      "Epoch: 15440/30000, Loss: 0.00664731\n",
      "Epoch: 15450/30000, Loss: 0.00663663\n",
      "Epoch: 15460/30000, Loss: 0.00662598\n",
      "Epoch: 15470/30000, Loss: 0.00661533\n",
      "Epoch: 15480/30000, Loss: 0.00660470\n",
      "Epoch: 15490/30000, Loss: 0.00659409\n",
      "Epoch: 15500/30000, Loss: 0.00658348\n",
      "Epoch: 15510/30000, Loss: 0.00657290\n",
      "Epoch: 15520/30000, Loss: 0.00656232\n",
      "Epoch: 15530/30000, Loss: 0.00655177\n",
      "Epoch: 15540/30000, Loss: 0.00654122\n",
      "Epoch: 15550/30000, Loss: 0.00653069\n",
      "Epoch: 15560/30000, Loss: 0.00652017\n",
      "Epoch: 15570/30000, Loss: 0.00650967\n",
      "Epoch: 15580/30000, Loss: 0.00649918\n",
      "Epoch: 15590/30000, Loss: 0.00648880\n",
      "Epoch: 15600/30000, Loss: 0.00647838\n",
      "Epoch: 15610/30000, Loss: 0.00646782\n",
      "Epoch: 15620/30000, Loss: 0.00645738\n",
      "Epoch: 15630/30000, Loss: 0.00644696\n",
      "Epoch: 15640/30000, Loss: 0.00643656\n",
      "Epoch: 15650/30000, Loss: 0.00642617\n",
      "Epoch: 15660/30000, Loss: 0.00641579\n",
      "Epoch: 15670/30000, Loss: 0.00640543\n",
      "Epoch: 15680/30000, Loss: 0.00639509\n",
      "Epoch: 15690/30000, Loss: 0.00638475\n",
      "Epoch: 15700/30000, Loss: 0.00637444\n",
      "Epoch: 15710/30000, Loss: 0.00636413\n",
      "Epoch: 15720/30000, Loss: 0.00635384\n",
      "Epoch: 15730/30000, Loss: 0.00634356\n",
      "Epoch: 15740/30000, Loss: 0.00633330\n",
      "Epoch: 15750/30000, Loss: 0.00632305\n",
      "Epoch: 15760/30000, Loss: 0.00631282\n",
      "Epoch: 15770/30000, Loss: 0.00630260\n",
      "Epoch: 15780/30000, Loss: 0.00629239\n",
      "Epoch: 15790/30000, Loss: 0.00628220\n",
      "Epoch: 15800/30000, Loss: 0.00627223\n",
      "Epoch: 15810/30000, Loss: 0.00626195\n",
      "Epoch: 15820/30000, Loss: 0.00625174\n",
      "Epoch: 15830/30000, Loss: 0.00624157\n",
      "Epoch: 15840/30000, Loss: 0.00623144\n",
      "Epoch: 15850/30000, Loss: 0.00622133\n",
      "Epoch: 15860/30000, Loss: 0.00621123\n",
      "Epoch: 15870/30000, Loss: 0.00620115\n",
      "Epoch: 15880/30000, Loss: 0.00619108\n",
      "Epoch: 15890/30000, Loss: 0.00618102\n",
      "Epoch: 15900/30000, Loss: 0.00617098\n",
      "Epoch: 15910/30000, Loss: 0.00616095\n",
      "Epoch: 15920/30000, Loss: 0.00615094\n",
      "Epoch: 15930/30000, Loss: 0.00614094\n",
      "Epoch: 15940/30000, Loss: 0.00613095\n",
      "Epoch: 15950/30000, Loss: 0.00612098\n",
      "Epoch: 15960/30000, Loss: 0.00611102\n",
      "Epoch: 15970/30000, Loss: 0.00610107\n",
      "Epoch: 15980/30000, Loss: 0.00609114\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 15990/30000, Loss: 0.00608122\n",
      "Epoch: 16000/30000, Loss: 0.00607137\n",
      "Epoch: 16010/30000, Loss: 0.00606144\n",
      "Epoch: 16020/30000, Loss: 0.00605156\n",
      "Epoch: 16030/30000, Loss: 0.00604170\n",
      "Epoch: 16040/30000, Loss: 0.00603184\n",
      "Epoch: 16050/30000, Loss: 0.00602200\n",
      "Epoch: 16060/30000, Loss: 0.00601217\n",
      "Epoch: 16070/30000, Loss: 0.00600236\n",
      "Epoch: 16080/30000, Loss: 0.00599256\n",
      "Epoch: 16090/30000, Loss: 0.00598278\n",
      "Epoch: 16100/30000, Loss: 0.00597301\n",
      "Epoch: 16110/30000, Loss: 0.00596325\n",
      "Epoch: 16120/30000, Loss: 0.00595351\n",
      "Epoch: 16130/30000, Loss: 0.00594378\n",
      "Epoch: 16140/30000, Loss: 0.00593406\n",
      "Epoch: 16150/30000, Loss: 0.00592436\n",
      "Epoch: 16160/30000, Loss: 0.00591467\n",
      "Epoch: 16170/30000, Loss: 0.00590499\n",
      "Epoch: 16180/30000, Loss: 0.00589533\n",
      "Epoch: 16190/30000, Loss: 0.00588568\n",
      "Epoch: 16200/30000, Loss: 0.00587608\n",
      "Epoch: 16210/30000, Loss: 0.00586642\n",
      "Epoch: 16220/30000, Loss: 0.00585685\n",
      "Epoch: 16230/30000, Loss: 0.00584724\n",
      "Epoch: 16240/30000, Loss: 0.00583764\n",
      "Epoch: 16250/30000, Loss: 0.00582806\n",
      "Epoch: 16260/30000, Loss: 0.00581850\n",
      "Epoch: 16270/30000, Loss: 0.00580896\n",
      "Epoch: 16280/30000, Loss: 0.00579943\n",
      "Epoch: 16290/30000, Loss: 0.00578991\n",
      "Epoch: 16300/30000, Loss: 0.00578041\n",
      "Epoch: 16310/30000, Loss: 0.00577092\n",
      "Epoch: 16320/30000, Loss: 0.00576144\n",
      "Epoch: 16330/30000, Loss: 0.00575198\n",
      "Epoch: 16340/30000, Loss: 0.00574253\n",
      "Epoch: 16350/30000, Loss: 0.00573309\n",
      "Epoch: 16360/30000, Loss: 0.00572366\n",
      "Epoch: 16370/30000, Loss: 0.00571425\n",
      "Epoch: 16380/30000, Loss: 0.00570485\n",
      "Epoch: 16390/30000, Loss: 0.00569546\n",
      "Epoch: 16400/30000, Loss: 0.00568620\n",
      "Epoch: 16410/30000, Loss: 0.00567684\n",
      "Epoch: 16420/30000, Loss: 0.00566738\n",
      "Epoch: 16430/30000, Loss: 0.00565805\n",
      "Epoch: 16440/30000, Loss: 0.00564873\n",
      "Epoch: 16450/30000, Loss: 0.00563942\n",
      "Epoch: 16460/30000, Loss: 0.00563012\n",
      "Epoch: 16470/30000, Loss: 0.00562084\n",
      "Epoch: 16480/30000, Loss: 0.00561157\n",
      "Epoch: 16490/30000, Loss: 0.00560231\n",
      "Epoch: 16500/30000, Loss: 0.00559307\n",
      "Epoch: 16510/30000, Loss: 0.00558384\n",
      "Epoch: 16520/30000, Loss: 0.00557462\n",
      "Epoch: 16530/30000, Loss: 0.00556541\n",
      "Epoch: 16540/30000, Loss: 0.00555622\n",
      "Epoch: 16550/30000, Loss: 0.00554704\n",
      "Epoch: 16560/30000, Loss: 0.00553787\n",
      "Epoch: 16570/30000, Loss: 0.00552872\n",
      "Epoch: 16580/30000, Loss: 0.00551958\n",
      "Epoch: 16590/30000, Loss: 0.00551046\n",
      "Epoch: 16600/30000, Loss: 0.00550157\n",
      "Epoch: 16610/30000, Loss: 0.00549232\n",
      "Epoch: 16620/30000, Loss: 0.00548316\n",
      "Epoch: 16630/30000, Loss: 0.00547407\n",
      "Epoch: 16640/30000, Loss: 0.00546500\n",
      "Epoch: 16650/30000, Loss: 0.00545595\n",
      "Epoch: 16660/30000, Loss: 0.00544691\n",
      "Epoch: 16670/30000, Loss: 0.00543788\n",
      "Epoch: 16680/30000, Loss: 0.00542887\n",
      "Epoch: 16690/30000, Loss: 0.00541987\n",
      "Epoch: 16700/30000, Loss: 0.00541088\n",
      "Epoch: 16710/30000, Loss: 0.00540190\n",
      "Epoch: 16720/30000, Loss: 0.00539294\n",
      "Epoch: 16730/30000, Loss: 0.00538399\n",
      "Epoch: 16740/30000, Loss: 0.00537505\n",
      "Epoch: 16750/30000, Loss: 0.00536612\n",
      "Epoch: 16760/30000, Loss: 0.00535721\n",
      "Epoch: 16770/30000, Loss: 0.00534831\n",
      "Epoch: 16780/30000, Loss: 0.00533942\n",
      "Epoch: 16790/30000, Loss: 0.00533054\n",
      "Epoch: 16800/30000, Loss: 0.00532168\n",
      "Epoch: 16810/30000, Loss: 0.00531300\n",
      "Epoch: 16820/30000, Loss: 0.00530422\n",
      "Epoch: 16830/30000, Loss: 0.00529524\n",
      "Epoch: 16840/30000, Loss: 0.00528638\n",
      "Epoch: 16850/30000, Loss: 0.00527756\n",
      "Epoch: 16860/30000, Loss: 0.00526876\n",
      "Epoch: 16870/30000, Loss: 0.00525999\n",
      "Epoch: 16880/30000, Loss: 0.00525122\n",
      "Epoch: 16890/30000, Loss: 0.00524247\n",
      "Epoch: 16900/30000, Loss: 0.00523373\n",
      "Epoch: 16910/30000, Loss: 0.00522501\n",
      "Epoch: 16920/30000, Loss: 0.00521629\n",
      "Epoch: 16930/30000, Loss: 0.00520759\n",
      "Epoch: 16940/30000, Loss: 0.00519890\n",
      "Epoch: 16950/30000, Loss: 0.00519022\n",
      "Epoch: 16960/30000, Loss: 0.00518155\n",
      "Epoch: 16970/30000, Loss: 0.00517290\n",
      "Epoch: 16980/30000, Loss: 0.00516426\n",
      "Epoch: 16990/30000, Loss: 0.00515563\n",
      "Epoch: 17000/30000, Loss: 0.00514702\n",
      "Epoch: 17010/30000, Loss: 0.00513841\n",
      "Epoch: 17020/30000, Loss: 0.00512982\n",
      "Epoch: 17030/30000, Loss: 0.00512124\n",
      "Epoch: 17040/30000, Loss: 0.00511280\n",
      "Epoch: 17050/30000, Loss: 0.00510428\n",
      "Epoch: 17060/30000, Loss: 0.00509558\n",
      "Epoch: 17070/30000, Loss: 0.00508704\n",
      "Epoch: 17080/30000, Loss: 0.00507853\n",
      "Epoch: 17090/30000, Loss: 0.00507002\n",
      "Epoch: 17100/30000, Loss: 0.00506152\n",
      "Epoch: 17110/30000, Loss: 0.00505304\n",
      "Epoch: 17120/30000, Loss: 0.00504457\n",
      "Epoch: 17130/30000, Loss: 0.00503611\n",
      "Epoch: 17140/30000, Loss: 0.00502767\n",
      "Epoch: 17150/30000, Loss: 0.00501923\n",
      "Epoch: 17160/30000, Loss: 0.00501081\n",
      "Epoch: 17170/30000, Loss: 0.00500240\n",
      "Epoch: 17180/30000, Loss: 0.00499400\n",
      "Epoch: 17190/30000, Loss: 0.00498561\n",
      "Epoch: 17200/30000, Loss: 0.00497724\n",
      "Epoch: 17210/30000, Loss: 0.00496888\n",
      "Epoch: 17220/30000, Loss: 0.00496053\n",
      "Epoch: 17230/30000, Loss: 0.00495219\n",
      "Epoch: 17240/30000, Loss: 0.00494386\n",
      "Epoch: 17250/30000, Loss: 0.00493572\n",
      "Epoch: 17260/30000, Loss: 0.00492748\n",
      "Epoch: 17270/30000, Loss: 0.00491902\n",
      "Epoch: 17280/30000, Loss: 0.00491070\n",
      "Epoch: 17290/30000, Loss: 0.00490242\n",
      "Epoch: 17300/30000, Loss: 0.00489416\n",
      "Epoch: 17310/30000, Loss: 0.00488591\n",
      "Epoch: 17320/30000, Loss: 0.00487769\n",
      "Epoch: 17330/30000, Loss: 0.00486947\n",
      "Epoch: 17340/30000, Loss: 0.00486126\n",
      "Epoch: 17350/30000, Loss: 0.00485306\n",
      "Epoch: 17360/30000, Loss: 0.00484488\n",
      "Epoch: 17370/30000, Loss: 0.00483671\n",
      "Epoch: 17380/30000, Loss: 0.00482855\n",
      "Epoch: 17390/30000, Loss: 0.00482040\n",
      "Epoch: 17400/30000, Loss: 0.00481226\n",
      "Epoch: 17410/30000, Loss: 0.00480413\n",
      "Epoch: 17420/30000, Loss: 0.00479602\n",
      "Epoch: 17430/30000, Loss: 0.00478792\n",
      "Epoch: 17440/30000, Loss: 0.00477983\n",
      "Epoch: 17450/30000, Loss: 0.00477175\n",
      "Epoch: 17460/30000, Loss: 0.00476368\n",
      "Epoch: 17470/30000, Loss: 0.00475563\n",
      "Epoch: 17480/30000, Loss: 0.00474808\n",
      "Epoch: 17490/30000, Loss: 0.00473961\n",
      "Epoch: 17500/30000, Loss: 0.00473154\n",
      "Epoch: 17510/30000, Loss: 0.00472352\n",
      "Epoch: 17520/30000, Loss: 0.00471552\n",
      "Epoch: 17530/30000, Loss: 0.00470754\n",
      "Epoch: 17540/30000, Loss: 0.00469956\n",
      "Epoch: 17550/30000, Loss: 0.00469160\n",
      "Epoch: 17560/30000, Loss: 0.00468365\n",
      "Epoch: 17570/30000, Loss: 0.00467571\n",
      "Epoch: 17580/30000, Loss: 0.00466778\n",
      "Epoch: 17590/30000, Loss: 0.00465986\n",
      "Epoch: 17600/30000, Loss: 0.00465196\n",
      "Epoch: 17610/30000, Loss: 0.00464406\n",
      "Epoch: 17620/30000, Loss: 0.00463618\n",
      "Epoch: 17630/30000, Loss: 0.00462831\n",
      "Epoch: 17640/30000, Loss: 0.00462045\n",
      "Epoch: 17650/30000, Loss: 0.00461260\n",
      "Epoch: 17660/30000, Loss: 0.00460477\n",
      "Epoch: 17670/30000, Loss: 0.00459694\n",
      "Epoch: 17680/30000, Loss: 0.00458913\n",
      "Epoch: 17690/30000, Loss: 0.00458133\n",
      "Epoch: 17700/30000, Loss: 0.00457395\n",
      "Epoch: 17710/30000, Loss: 0.00456583\n",
      "Epoch: 17720/30000, Loss: 0.00455804\n",
      "Epoch: 17730/30000, Loss: 0.00455025\n",
      "Epoch: 17740/30000, Loss: 0.00454249\n",
      "Epoch: 17750/30000, Loss: 0.00453476\n",
      "Epoch: 17760/30000, Loss: 0.00452703\n",
      "Epoch: 17770/30000, Loss: 0.00451932\n",
      "Epoch: 17780/30000, Loss: 0.00451162\n",
      "Epoch: 17790/30000, Loss: 0.00450393\n",
      "Epoch: 17800/30000, Loss: 0.00449626\n",
      "Epoch: 17810/30000, Loss: 0.00448859\n",
      "Epoch: 17820/30000, Loss: 0.00448093\n",
      "Epoch: 17830/30000, Loss: 0.00447329\n",
      "Epoch: 17840/30000, Loss: 0.00446566\n",
      "Epoch: 17850/30000, Loss: 0.00445804\n",
      "Epoch: 17860/30000, Loss: 0.00445043\n",
      "Epoch: 17870/30000, Loss: 0.00444283\n",
      "Epoch: 17880/30000, Loss: 0.00443524\n",
      "Epoch: 17890/30000, Loss: 0.00442766\n",
      "Epoch: 17900/30000, Loss: 0.00442010\n",
      "Epoch: 17910/30000, Loss: 0.00441255\n",
      "Epoch: 17920/30000, Loss: 0.00440558\n",
      "Epoch: 17930/30000, Loss: 0.00439748\n",
      "Epoch: 17940/30000, Loss: 0.00438995\n",
      "Epoch: 17950/30000, Loss: 0.00438244\n",
      "Epoch: 17960/30000, Loss: 0.00437494\n",
      "Epoch: 17970/30000, Loss: 0.00436745\n",
      "Epoch: 17980/30000, Loss: 0.00435997\n",
      "Epoch: 17990/30000, Loss: 0.00435251\n",
      "Epoch: 18000/30000, Loss: 0.00434505\n",
      "Epoch: 18010/30000, Loss: 0.00433761\n",
      "Epoch: 18020/30000, Loss: 0.00433018\n",
      "Epoch: 18030/30000, Loss: 0.00432275\n",
      "Epoch: 18040/30000, Loss: 0.00431534\n",
      "Epoch: 18050/30000, Loss: 0.00430794\n",
      "Epoch: 18060/30000, Loss: 0.00430055\n",
      "Epoch: 18070/30000, Loss: 0.00429317\n",
      "Epoch: 18080/30000, Loss: 0.00428581\n",
      "Epoch: 18090/30000, Loss: 0.00427845\n",
      "Epoch: 18100/30000, Loss: 0.00427110\n",
      "Epoch: 18110/30000, Loss: 0.00426377\n",
      "Epoch: 18120/30000, Loss: 0.00425644\n",
      "Epoch: 18130/30000, Loss: 0.00424913\n",
      "Epoch: 18140/30000, Loss: 0.00424184\n",
      "Epoch: 18150/30000, Loss: 0.00423501\n",
      "Epoch: 18160/30000, Loss: 0.00422743\n",
      "Epoch: 18170/30000, Loss: 0.00422005\n",
      "Epoch: 18180/30000, Loss: 0.00421275\n",
      "Epoch: 18190/30000, Loss: 0.00420549\n",
      "Epoch: 18200/30000, Loss: 0.00419825\n",
      "Epoch: 18210/30000, Loss: 0.00419102\n",
      "Epoch: 18220/30000, Loss: 0.00418381\n",
      "Epoch: 18230/30000, Loss: 0.00417660\n",
      "Epoch: 18240/30000, Loss: 0.00416941\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 18250/30000, Loss: 0.00416222\n",
      "Epoch: 18260/30000, Loss: 0.00415505\n",
      "Epoch: 18270/30000, Loss: 0.00414789\n",
      "Epoch: 18280/30000, Loss: 0.00414074\n",
      "Epoch: 18290/30000, Loss: 0.00413360\n",
      "Epoch: 18300/30000, Loss: 0.00412647\n",
      "Epoch: 18310/30000, Loss: 0.00411935\n",
      "Epoch: 18320/30000, Loss: 0.00411225\n",
      "Epoch: 18330/30000, Loss: 0.00410515\n",
      "Epoch: 18340/30000, Loss: 0.00409806\n",
      "Epoch: 18350/30000, Loss: 0.00409098\n",
      "Epoch: 18360/30000, Loss: 0.00408392\n",
      "Epoch: 18370/30000, Loss: 0.00407686\n",
      "Epoch: 18380/30000, Loss: 0.00406982\n",
      "Epoch: 18390/30000, Loss: 0.00406308\n",
      "Epoch: 18400/30000, Loss: 0.00405600\n",
      "Epoch: 18410/30000, Loss: 0.00404883\n",
      "Epoch: 18420/30000, Loss: 0.00404177\n",
      "Epoch: 18430/30000, Loss: 0.00403476\n",
      "Epoch: 18440/30000, Loss: 0.00402777\n",
      "Epoch: 18450/30000, Loss: 0.00402080\n",
      "Epoch: 18460/30000, Loss: 0.00401384\n",
      "Epoch: 18470/30000, Loss: 0.00400689\n",
      "Epoch: 18480/30000, Loss: 0.00399995\n",
      "Epoch: 18490/30000, Loss: 0.00399303\n",
      "Epoch: 18500/30000, Loss: 0.00398611\n",
      "Epoch: 18510/30000, Loss: 0.00397920\n",
      "Epoch: 18520/30000, Loss: 0.00397230\n",
      "Epoch: 18530/30000, Loss: 0.00396541\n",
      "Epoch: 18540/30000, Loss: 0.00395854\n",
      "Epoch: 18550/30000, Loss: 0.00395167\n",
      "Epoch: 18560/30000, Loss: 0.00394481\n",
      "Epoch: 18570/30000, Loss: 0.00393797\n",
      "Epoch: 18580/30000, Loss: 0.00393113\n",
      "Epoch: 18590/30000, Loss: 0.00392431\n",
      "Epoch: 18600/30000, Loss: 0.00391749\n",
      "Epoch: 18610/30000, Loss: 0.00391069\n",
      "Epoch: 18620/30000, Loss: 0.00390405\n",
      "Epoch: 18630/30000, Loss: 0.00389749\n",
      "Epoch: 18640/30000, Loss: 0.00389047\n",
      "Epoch: 18650/30000, Loss: 0.00388361\n",
      "Epoch: 18660/30000, Loss: 0.00387683\n",
      "Epoch: 18670/30000, Loss: 0.00387008\n",
      "Epoch: 18680/30000, Loss: 0.00386335\n",
      "Epoch: 18690/30000, Loss: 0.00385663\n",
      "Epoch: 18700/30000, Loss: 0.00384992\n",
      "Epoch: 18710/30000, Loss: 0.00384321\n",
      "Epoch: 18720/30000, Loss: 0.00383652\n",
      "Epoch: 18730/30000, Loss: 0.00382984\n",
      "Epoch: 18740/30000, Loss: 0.00382317\n",
      "Epoch: 18750/30000, Loss: 0.00381651\n",
      "Epoch: 18760/30000, Loss: 0.00380986\n",
      "Epoch: 18770/30000, Loss: 0.00380322\n",
      "Epoch: 18780/30000, Loss: 0.00379659\n",
      "Epoch: 18790/30000, Loss: 0.00378997\n",
      "Epoch: 18800/30000, Loss: 0.00378336\n",
      "Epoch: 18810/30000, Loss: 0.00377676\n",
      "Epoch: 18820/30000, Loss: 0.00377017\n",
      "Epoch: 18830/30000, Loss: 0.00376359\n",
      "Epoch: 18840/30000, Loss: 0.00375702\n",
      "Epoch: 18850/30000, Loss: 0.00375046\n",
      "Epoch: 18860/30000, Loss: 0.00374391\n",
      "Epoch: 18870/30000, Loss: 0.00373737\n",
      "Epoch: 18880/30000, Loss: 0.00373084\n",
      "Epoch: 18890/30000, Loss: 0.00372432\n",
      "Epoch: 18900/30000, Loss: 0.00371781\n",
      "Epoch: 18910/30000, Loss: 0.00371234\n",
      "Epoch: 18920/30000, Loss: 0.00370505\n",
      "Epoch: 18930/30000, Loss: 0.00369844\n",
      "Epoch: 18940/30000, Loss: 0.00369187\n",
      "Epoch: 18950/30000, Loss: 0.00368542\n",
      "Epoch: 18960/30000, Loss: 0.00367896\n",
      "Epoch: 18970/30000, Loss: 0.00367252\n",
      "Epoch: 18980/30000, Loss: 0.00366609\n",
      "Epoch: 18990/30000, Loss: 0.00365967\n",
      "Epoch: 19000/30000, Loss: 0.00365326\n",
      "Epoch: 19010/30000, Loss: 0.00364686\n",
      "Epoch: 19020/30000, Loss: 0.00364047\n",
      "Epoch: 19030/30000, Loss: 0.00363409\n",
      "Epoch: 19040/30000, Loss: 0.00362772\n",
      "Epoch: 19050/30000, Loss: 0.00362136\n",
      "Epoch: 19060/30000, Loss: 0.00361500\n",
      "Epoch: 19070/30000, Loss: 0.00360866\n",
      "Epoch: 19080/30000, Loss: 0.00360233\n",
      "Epoch: 19090/30000, Loss: 0.00359601\n",
      "Epoch: 19100/30000, Loss: 0.00358970\n",
      "Epoch: 19110/30000, Loss: 0.00358339\n",
      "Epoch: 19120/30000, Loss: 0.00357710\n",
      "Epoch: 19130/30000, Loss: 0.00357082\n",
      "Epoch: 19140/30000, Loss: 0.00356454\n",
      "Epoch: 19150/30000, Loss: 0.00355828\n",
      "Epoch: 19160/30000, Loss: 0.00355203\n",
      "Epoch: 19170/30000, Loss: 0.00354578\n",
      "Epoch: 19180/30000, Loss: 0.00353955\n",
      "Epoch: 19190/30000, Loss: 0.00353332\n",
      "Epoch: 19200/30000, Loss: 0.00352711\n",
      "Epoch: 19210/30000, Loss: 0.00352090\n",
      "Epoch: 19220/30000, Loss: 0.00351481\n",
      "Epoch: 19230/30000, Loss: 0.00350867\n",
      "Epoch: 19240/30000, Loss: 0.00350237\n",
      "Epoch: 19250/30000, Loss: 0.00349619\n",
      "Epoch: 19260/30000, Loss: 0.00349002\n",
      "Epoch: 19270/30000, Loss: 0.00348387\n",
      "Epoch: 19280/30000, Loss: 0.00347773\n",
      "Epoch: 19290/30000, Loss: 0.00347160\n",
      "Epoch: 19300/30000, Loss: 0.00346548\n",
      "Epoch: 19310/30000, Loss: 0.00345937\n",
      "Epoch: 19320/30000, Loss: 0.00345327\n",
      "Epoch: 19330/30000, Loss: 0.00344718\n",
      "Epoch: 19340/30000, Loss: 0.00344109\n",
      "Epoch: 19350/30000, Loss: 0.00343502\n",
      "Epoch: 19360/30000, Loss: 0.00342896\n",
      "Epoch: 19370/30000, Loss: 0.00342291\n",
      "Epoch: 19380/30000, Loss: 0.00341686\n",
      "Epoch: 19390/30000, Loss: 0.00341083\n",
      "Epoch: 19400/30000, Loss: 0.00340481\n",
      "Epoch: 19410/30000, Loss: 0.00339879\n",
      "Epoch: 19420/30000, Loss: 0.00339279\n",
      "Epoch: 19430/30000, Loss: 0.00338679\n",
      "Epoch: 19440/30000, Loss: 0.00338080\n",
      "Epoch: 19450/30000, Loss: 0.00337482\n",
      "Epoch: 19460/30000, Loss: 0.00336885\n",
      "Epoch: 19470/30000, Loss: 0.00336292\n",
      "Epoch: 19480/30000, Loss: 0.00335737\n",
      "Epoch: 19490/30000, Loss: 0.00335112\n",
      "Epoch: 19500/30000, Loss: 0.00334508\n",
      "Epoch: 19510/30000, Loss: 0.00333915\n",
      "Epoch: 19520/30000, Loss: 0.00333324\n",
      "Epoch: 19530/30000, Loss: 0.00332734\n",
      "Epoch: 19540/30000, Loss: 0.00332144\n",
      "Epoch: 19550/30000, Loss: 0.00331556\n",
      "Epoch: 19560/30000, Loss: 0.00330968\n",
      "Epoch: 19570/30000, Loss: 0.00330381\n",
      "Epoch: 19580/30000, Loss: 0.00329796\n",
      "Epoch: 19590/30000, Loss: 0.00329211\n",
      "Epoch: 19600/30000, Loss: 0.00328627\n",
      "Epoch: 19610/30000, Loss: 0.00328044\n",
      "Epoch: 19620/30000, Loss: 0.00327462\n",
      "Epoch: 19630/30000, Loss: 0.00326881\n",
      "Epoch: 19640/30000, Loss: 0.00326300\n",
      "Epoch: 19650/30000, Loss: 0.00325721\n",
      "Epoch: 19660/30000, Loss: 0.00325143\n",
      "Epoch: 19670/30000, Loss: 0.00324565\n",
      "Epoch: 19680/30000, Loss: 0.00323989\n",
      "Epoch: 19690/30000, Loss: 0.00323413\n",
      "Epoch: 19700/30000, Loss: 0.00322841\n",
      "Epoch: 19710/30000, Loss: 0.00322286\n",
      "Epoch: 19720/30000, Loss: 0.00321700\n",
      "Epoch: 19730/30000, Loss: 0.00321119\n",
      "Epoch: 19740/30000, Loss: 0.00320549\n",
      "Epoch: 19750/30000, Loss: 0.00319979\n",
      "Epoch: 19760/30000, Loss: 0.00319409\n",
      "Epoch: 19770/30000, Loss: 0.00318840\n",
      "Epoch: 19780/30000, Loss: 0.00318273\n",
      "Epoch: 19790/30000, Loss: 0.00317706\n",
      "Epoch: 19800/30000, Loss: 0.00317140\n",
      "Epoch: 19810/30000, Loss: 0.00316575\n",
      "Epoch: 19820/30000, Loss: 0.00316012\n",
      "Epoch: 19830/30000, Loss: 0.00315449\n",
      "Epoch: 19840/30000, Loss: 0.00314886\n",
      "Epoch: 19850/30000, Loss: 0.00314325\n",
      "Epoch: 19860/30000, Loss: 0.00313765\n",
      "Epoch: 19870/30000, Loss: 0.00313205\n",
      "Epoch: 19880/30000, Loss: 0.00312647\n",
      "Epoch: 19890/30000, Loss: 0.00312089\n",
      "Epoch: 19900/30000, Loss: 0.00311532\n",
      "Epoch: 19910/30000, Loss: 0.00310976\n",
      "Epoch: 19920/30000, Loss: 0.00310421\n",
      "Epoch: 19930/30000, Loss: 0.00309867\n",
      "Epoch: 19940/30000, Loss: 0.00309314\n",
      "Epoch: 19950/30000, Loss: 0.00308761\n",
      "Epoch: 19960/30000, Loss: 0.00308209\n",
      "Epoch: 19970/30000, Loss: 0.00307659\n",
      "Epoch: 19980/30000, Loss: 0.00307115\n",
      "Epoch: 19990/30000, Loss: 0.00306563\n",
      "Epoch: 20000/30000, Loss: 0.00306025\n",
      "Epoch: 20010/30000, Loss: 0.00305469\n",
      "Epoch: 20020/30000, Loss: 0.00304919\n",
      "Epoch: 20030/30000, Loss: 0.00304373\n",
      "Epoch: 20040/30000, Loss: 0.00303829\n",
      "Epoch: 20050/30000, Loss: 0.00303285\n",
      "Epoch: 20060/30000, Loss: 0.00302742\n",
      "Epoch: 20070/30000, Loss: 0.00302200\n",
      "Epoch: 20080/30000, Loss: 0.00301659\n",
      "Epoch: 20090/30000, Loss: 0.00301119\n",
      "Epoch: 20100/30000, Loss: 0.00300579\n",
      "Epoch: 20110/30000, Loss: 0.00300041\n",
      "Epoch: 20120/30000, Loss: 0.00299503\n",
      "Epoch: 20130/30000, Loss: 0.00298966\n",
      "Epoch: 20140/30000, Loss: 0.00298430\n",
      "Epoch: 20150/30000, Loss: 0.00297895\n",
      "Epoch: 20160/30000, Loss: 0.00297361\n",
      "Epoch: 20170/30000, Loss: 0.00296828\n",
      "Epoch: 20180/30000, Loss: 0.00296295\n",
      "Epoch: 20190/30000, Loss: 0.00295764\n",
      "Epoch: 20200/30000, Loss: 0.00295287\n",
      "Epoch: 20210/30000, Loss: 0.00294721\n",
      "Epoch: 20220/30000, Loss: 0.00294181\n",
      "Epoch: 20230/30000, Loss: 0.00293647\n",
      "Epoch: 20240/30000, Loss: 0.00293119\n",
      "Epoch: 20250/30000, Loss: 0.00292592\n",
      "Epoch: 20260/30000, Loss: 0.00292066\n",
      "Epoch: 20270/30000, Loss: 0.00291541\n",
      "Epoch: 20280/30000, Loss: 0.00291017\n",
      "Epoch: 20290/30000, Loss: 0.00290494\n",
      "Epoch: 20300/30000, Loss: 0.00289972\n",
      "Epoch: 20310/30000, Loss: 0.00289450\n",
      "Epoch: 20320/30000, Loss: 0.00288930\n",
      "Epoch: 20330/30000, Loss: 0.00288410\n",
      "Epoch: 20340/30000, Loss: 0.00287891\n",
      "Epoch: 20350/30000, Loss: 0.00287373\n",
      "Epoch: 20360/30000, Loss: 0.00286855\n",
      "Epoch: 20370/30000, Loss: 0.00286339\n",
      "Epoch: 20380/30000, Loss: 0.00285823\n",
      "Epoch: 20390/30000, Loss: 0.00285309\n",
      "Epoch: 20400/30000, Loss: 0.00284795\n",
      "Epoch: 20410/30000, Loss: 0.00284281\n",
      "Epoch: 20420/30000, Loss: 0.00283769\n",
      "Epoch: 20430/30000, Loss: 0.00283258\n",
      "Epoch: 20440/30000, Loss: 0.00282747\n",
      "Epoch: 20450/30000, Loss: 0.00282254\n",
      "Epoch: 20460/30000, Loss: 0.00281749\n",
      "Epoch: 20470/30000, Loss: 0.00281220\n",
      "Epoch: 20480/30000, Loss: 0.00280713\n",
      "Epoch: 20490/30000, Loss: 0.00280207\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 20500/30000, Loss: 0.00279701\n",
      "Epoch: 20510/30000, Loss: 0.00279196\n",
      "Epoch: 20520/30000, Loss: 0.00278692\n",
      "Epoch: 20530/30000, Loss: 0.00278188\n",
      "Epoch: 20540/30000, Loss: 0.00277686\n",
      "Epoch: 20550/30000, Loss: 0.00277184\n",
      "Epoch: 20560/30000, Loss: 0.00276683\n",
      "Epoch: 20570/30000, Loss: 0.00276183\n",
      "Epoch: 20580/30000, Loss: 0.00275684\n",
      "Epoch: 20590/30000, Loss: 0.00275186\n",
      "Epoch: 20600/30000, Loss: 0.00274688\n",
      "Epoch: 20610/30000, Loss: 0.00274191\n",
      "Epoch: 20620/30000, Loss: 0.00273695\n",
      "Epoch: 20630/30000, Loss: 0.00273200\n",
      "Epoch: 20640/30000, Loss: 0.00272706\n",
      "Epoch: 20650/30000, Loss: 0.00272212\n",
      "Epoch: 20660/30000, Loss: 0.00271720\n",
      "Epoch: 20670/30000, Loss: 0.00271230\n",
      "Epoch: 20680/30000, Loss: 0.00270795\n",
      "Epoch: 20690/30000, Loss: 0.00270252\n",
      "Epoch: 20700/30000, Loss: 0.00269757\n",
      "Epoch: 20710/30000, Loss: 0.00269269\n",
      "Epoch: 20720/30000, Loss: 0.00268781\n",
      "Epoch: 20730/30000, Loss: 0.00268293\n",
      "Epoch: 20740/30000, Loss: 0.00267807\n",
      "Epoch: 20750/30000, Loss: 0.00267321\n",
      "Epoch: 20760/30000, Loss: 0.00266837\n",
      "Epoch: 20770/30000, Loss: 0.00266353\n",
      "Epoch: 20780/30000, Loss: 0.00265870\n",
      "Epoch: 20790/30000, Loss: 0.00265387\n",
      "Epoch: 20800/30000, Loss: 0.00264906\n",
      "Epoch: 20810/30000, Loss: 0.00264425\n",
      "Epoch: 20820/30000, Loss: 0.00263945\n",
      "Epoch: 20830/30000, Loss: 0.00263466\n",
      "Epoch: 20840/30000, Loss: 0.00262987\n",
      "Epoch: 20850/30000, Loss: 0.00262510\n",
      "Epoch: 20860/30000, Loss: 0.00262033\n",
      "Epoch: 20870/30000, Loss: 0.00261557\n",
      "Epoch: 20880/30000, Loss: 0.00261083\n",
      "Epoch: 20890/30000, Loss: 0.00260687\n",
      "Epoch: 20900/30000, Loss: 0.00260134\n",
      "Epoch: 20910/30000, Loss: 0.00259662\n",
      "Epoch: 20920/30000, Loss: 0.00259190\n",
      "Epoch: 20930/30000, Loss: 0.00258718\n",
      "Epoch: 20940/30000, Loss: 0.00258247\n",
      "Epoch: 20950/30000, Loss: 0.00257777\n",
      "Epoch: 20960/30000, Loss: 0.00257308\n",
      "Epoch: 20970/30000, Loss: 0.00256839\n",
      "Epoch: 20980/30000, Loss: 0.00256372\n",
      "Epoch: 20990/30000, Loss: 0.00255905\n",
      "Epoch: 21000/30000, Loss: 0.00255439\n",
      "Epoch: 21010/30000, Loss: 0.00254974\n",
      "Epoch: 21020/30000, Loss: 0.00254509\n",
      "Epoch: 21030/30000, Loss: 0.00254046\n",
      "Epoch: 21040/30000, Loss: 0.00253583\n",
      "Epoch: 21050/30000, Loss: 0.00253121\n",
      "Epoch: 21060/30000, Loss: 0.00252659\n",
      "Epoch: 21070/30000, Loss: 0.00252199\n",
      "Epoch: 21080/30000, Loss: 0.00251739\n",
      "Epoch: 21090/30000, Loss: 0.00251280\n",
      "Epoch: 21100/30000, Loss: 0.00250821\n",
      "Epoch: 21110/30000, Loss: 0.00250374\n",
      "Epoch: 21120/30000, Loss: 0.00249910\n",
      "Epoch: 21130/30000, Loss: 0.00249453\n",
      "Epoch: 21140/30000, Loss: 0.00248997\n",
      "Epoch: 21150/30000, Loss: 0.00248542\n",
      "Epoch: 21160/30000, Loss: 0.00248088\n",
      "Epoch: 21170/30000, Loss: 0.00247635\n",
      "Epoch: 21180/30000, Loss: 0.00247182\n",
      "Epoch: 21190/30000, Loss: 0.00246731\n",
      "Epoch: 21200/30000, Loss: 0.00246280\n",
      "Epoch: 21210/30000, Loss: 0.00245830\n",
      "Epoch: 21220/30000, Loss: 0.00245381\n",
      "Epoch: 21230/30000, Loss: 0.00244932\n",
      "Epoch: 21240/30000, Loss: 0.00244485\n",
      "Epoch: 21250/30000, Loss: 0.00244038\n",
      "Epoch: 21260/30000, Loss: 0.00243591\n",
      "Epoch: 21270/30000, Loss: 0.00243146\n",
      "Epoch: 21280/30000, Loss: 0.00242701\n",
      "Epoch: 21290/30000, Loss: 0.00242257\n",
      "Epoch: 21300/30000, Loss: 0.00241814\n",
      "Epoch: 21310/30000, Loss: 0.00241371\n",
      "Epoch: 21320/30000, Loss: 0.00240929\n",
      "Epoch: 21330/30000, Loss: 0.00240488\n",
      "Epoch: 21340/30000, Loss: 0.00240048\n",
      "Epoch: 21350/30000, Loss: 0.00239650\n",
      "Epoch: 21360/30000, Loss: 0.00239201\n",
      "Epoch: 21370/30000, Loss: 0.00238736\n",
      "Epoch: 21380/30000, Loss: 0.00238294\n",
      "Epoch: 21390/30000, Loss: 0.00237858\n",
      "Epoch: 21400/30000, Loss: 0.00237422\n",
      "Epoch: 21410/30000, Loss: 0.00236986\n",
      "Epoch: 21420/30000, Loss: 0.00236552\n",
      "Epoch: 21430/30000, Loss: 0.00236118\n",
      "Epoch: 21440/30000, Loss: 0.00235685\n",
      "Epoch: 21450/30000, Loss: 0.00235252\n",
      "Epoch: 21460/30000, Loss: 0.00234821\n",
      "Epoch: 21470/30000, Loss: 0.00234390\n",
      "Epoch: 21480/30000, Loss: 0.00233960\n",
      "Epoch: 21490/30000, Loss: 0.00233531\n",
      "Epoch: 21500/30000, Loss: 0.00233102\n",
      "Epoch: 21510/30000, Loss: 0.00232674\n",
      "Epoch: 21520/30000, Loss: 0.00232247\n",
      "Epoch: 21530/30000, Loss: 0.00231820\n",
      "Epoch: 21540/30000, Loss: 0.00231394\n",
      "Epoch: 21550/30000, Loss: 0.00230970\n",
      "Epoch: 21560/30000, Loss: 0.00230615\n",
      "Epoch: 21570/30000, Loss: 0.00230135\n",
      "Epoch: 21580/30000, Loss: 0.00229708\n",
      "Epoch: 21590/30000, Loss: 0.00229280\n",
      "Epoch: 21600/30000, Loss: 0.00228856\n",
      "Epoch: 21610/30000, Loss: 0.00228434\n",
      "Epoch: 21620/30000, Loss: 0.00228014\n",
      "Epoch: 21630/30000, Loss: 0.00227594\n",
      "Epoch: 21640/30000, Loss: 0.00227176\n",
      "Epoch: 21650/30000, Loss: 0.00226758\n",
      "Epoch: 21660/30000, Loss: 0.00226341\n",
      "Epoch: 21670/30000, Loss: 0.00225924\n",
      "Epoch: 21680/30000, Loss: 0.00225508\n",
      "Epoch: 21690/30000, Loss: 0.00225093\n",
      "Epoch: 21700/30000, Loss: 0.00224679\n",
      "Epoch: 21710/30000, Loss: 0.00224265\n",
      "Epoch: 21720/30000, Loss: 0.00223852\n",
      "Epoch: 21730/30000, Loss: 0.00223440\n",
      "Epoch: 21740/30000, Loss: 0.00223028\n",
      "Epoch: 21750/30000, Loss: 0.00222617\n",
      "Epoch: 21760/30000, Loss: 0.00222207\n",
      "Epoch: 21770/30000, Loss: 0.00221797\n",
      "Epoch: 21780/30000, Loss: 0.00221389\n",
      "Epoch: 21790/30000, Loss: 0.00220997\n",
      "Epoch: 21800/30000, Loss: 0.00220590\n",
      "Epoch: 21810/30000, Loss: 0.00220166\n",
      "Epoch: 21820/30000, Loss: 0.00219760\n",
      "Epoch: 21830/30000, Loss: 0.00219355\n",
      "Epoch: 21840/30000, Loss: 0.00218950\n",
      "Epoch: 21850/30000, Loss: 0.00218546\n",
      "Epoch: 21860/30000, Loss: 0.00218143\n",
      "Epoch: 21870/30000, Loss: 0.00217740\n",
      "Epoch: 21880/30000, Loss: 0.00217338\n",
      "Epoch: 21890/30000, Loss: 0.00216937\n",
      "Epoch: 21900/30000, Loss: 0.00216537\n",
      "Epoch: 21910/30000, Loss: 0.00216137\n",
      "Epoch: 21920/30000, Loss: 0.00215737\n",
      "Epoch: 21930/30000, Loss: 0.00215339\n",
      "Epoch: 21940/30000, Loss: 0.00214941\n",
      "Epoch: 21950/30000, Loss: 0.00214544\n",
      "Epoch: 21960/30000, Loss: 0.00214148\n",
      "Epoch: 21970/30000, Loss: 0.00213752\n",
      "Epoch: 21980/30000, Loss: 0.00213357\n",
      "Epoch: 21990/30000, Loss: 0.00212962\n",
      "Epoch: 22000/30000, Loss: 0.00212568\n",
      "Epoch: 22010/30000, Loss: 0.00212175\n",
      "Epoch: 22020/30000, Loss: 0.00211783\n",
      "Epoch: 22030/30000, Loss: 0.00211411\n",
      "Epoch: 22040/30000, Loss: 0.00211034\n",
      "Epoch: 22050/30000, Loss: 0.00210616\n",
      "Epoch: 22060/30000, Loss: 0.00210223\n",
      "Epoch: 22070/30000, Loss: 0.00209833\n",
      "Epoch: 22080/30000, Loss: 0.00209443\n",
      "Epoch: 22090/30000, Loss: 0.00209055\n",
      "Epoch: 22100/30000, Loss: 0.00208668\n",
      "Epoch: 22110/30000, Loss: 0.00208282\n",
      "Epoch: 22120/30000, Loss: 0.00207896\n",
      "Epoch: 22130/30000, Loss: 0.00207511\n",
      "Epoch: 22140/30000, Loss: 0.00207127\n",
      "Epoch: 22150/30000, Loss: 0.00206743\n",
      "Epoch: 22160/30000, Loss: 0.00206360\n",
      "Epoch: 22170/30000, Loss: 0.00205977\n",
      "Epoch: 22180/30000, Loss: 0.00205596\n",
      "Epoch: 22190/30000, Loss: 0.00205215\n",
      "Epoch: 22200/30000, Loss: 0.00204834\n",
      "Epoch: 22210/30000, Loss: 0.00204454\n",
      "Epoch: 22220/30000, Loss: 0.00204075\n",
      "Epoch: 22230/30000, Loss: 0.00203697\n",
      "Epoch: 22240/30000, Loss: 0.00203319\n",
      "Epoch: 22250/30000, Loss: 0.00202942\n",
      "Epoch: 22260/30000, Loss: 0.00202565\n",
      "Epoch: 22270/30000, Loss: 0.00202189\n",
      "Epoch: 22280/30000, Loss: 0.00201822\n",
      "Epoch: 22290/30000, Loss: 0.00201443\n",
      "Epoch: 22300/30000, Loss: 0.00201082\n",
      "Epoch: 22310/30000, Loss: 0.00200699\n",
      "Epoch: 22320/30000, Loss: 0.00200322\n",
      "Epoch: 22330/30000, Loss: 0.00199948\n",
      "Epoch: 22340/30000, Loss: 0.00199577\n",
      "Epoch: 22350/30000, Loss: 0.00199206\n",
      "Epoch: 22360/30000, Loss: 0.00198836\n",
      "Epoch: 22370/30000, Loss: 0.00198467\n",
      "Epoch: 22380/30000, Loss: 0.00198098\n",
      "Epoch: 22390/30000, Loss: 0.00197730\n",
      "Epoch: 22400/30000, Loss: 0.00197362\n",
      "Epoch: 22410/30000, Loss: 0.00196995\n",
      "Epoch: 22420/30000, Loss: 0.00196629\n",
      "Epoch: 22430/30000, Loss: 0.00196264\n",
      "Epoch: 22440/30000, Loss: 0.00195899\n",
      "Epoch: 22450/30000, Loss: 0.00195534\n",
      "Epoch: 22460/30000, Loss: 0.00195171\n",
      "Epoch: 22470/30000, Loss: 0.00194808\n",
      "Epoch: 22480/30000, Loss: 0.00194445\n",
      "Epoch: 22490/30000, Loss: 0.00194083\n",
      "Epoch: 22500/30000, Loss: 0.00193749\n",
      "Epoch: 22510/30000, Loss: 0.00193389\n",
      "Epoch: 22520/30000, Loss: 0.00193002\n",
      "Epoch: 22530/30000, Loss: 0.00192644\n",
      "Epoch: 22540/30000, Loss: 0.00192286\n",
      "Epoch: 22550/30000, Loss: 0.00191926\n",
      "Epoch: 22560/30000, Loss: 0.00191569\n",
      "Epoch: 22570/30000, Loss: 0.00191212\n",
      "Epoch: 22580/30000, Loss: 0.00190856\n",
      "Epoch: 22590/30000, Loss: 0.00190500\n",
      "Epoch: 22600/30000, Loss: 0.00190145\n",
      "Epoch: 22610/30000, Loss: 0.00189791\n",
      "Epoch: 22620/30000, Loss: 0.00189437\n",
      "Epoch: 22630/30000, Loss: 0.00189084\n",
      "Epoch: 22640/30000, Loss: 0.00188732\n",
      "Epoch: 22650/30000, Loss: 0.00188380\n",
      "Epoch: 22660/30000, Loss: 0.00188029\n",
      "Epoch: 22670/30000, Loss: 0.00187678\n",
      "Epoch: 22680/30000, Loss: 0.00187328\n",
      "Epoch: 22690/30000, Loss: 0.00186979\n",
      "Epoch: 22700/30000, Loss: 0.00186630\n",
      "Epoch: 22710/30000, Loss: 0.00186286\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 22720/30000, Loss: 0.00185981\n",
      "Epoch: 22730/30000, Loss: 0.00185612\n",
      "Epoch: 22740/30000, Loss: 0.00185248\n",
      "Epoch: 22750/30000, Loss: 0.00184897\n",
      "Epoch: 22760/30000, Loss: 0.00184551\n",
      "Epoch: 22770/30000, Loss: 0.00184206\n",
      "Epoch: 22780/30000, Loss: 0.00183863\n",
      "Epoch: 22790/30000, Loss: 0.00183519\n",
      "Epoch: 22800/30000, Loss: 0.00183177\n",
      "Epoch: 22810/30000, Loss: 0.00182835\n",
      "Epoch: 22820/30000, Loss: 0.00182493\n",
      "Epoch: 22830/30000, Loss: 0.00182152\n",
      "Epoch: 22840/30000, Loss: 0.00181812\n",
      "Epoch: 22850/30000, Loss: 0.00181472\n",
      "Epoch: 22860/30000, Loss: 0.00181133\n",
      "Epoch: 22870/30000, Loss: 0.00180795\n",
      "Epoch: 22880/30000, Loss: 0.00180457\n",
      "Epoch: 22890/30000, Loss: 0.00180120\n",
      "Epoch: 22900/30000, Loss: 0.00179783\n",
      "Epoch: 22910/30000, Loss: 0.00179447\n",
      "Epoch: 22920/30000, Loss: 0.00179111\n",
      "Epoch: 22930/30000, Loss: 0.00178776\n",
      "Epoch: 22940/30000, Loss: 0.00178445\n",
      "Epoch: 22950/30000, Loss: 0.00178183\n",
      "Epoch: 22960/30000, Loss: 0.00177796\n",
      "Epoch: 22970/30000, Loss: 0.00177447\n",
      "Epoch: 22980/30000, Loss: 0.00177111\n",
      "Epoch: 22990/30000, Loss: 0.00176779\n",
      "Epoch: 23000/30000, Loss: 0.00176449\n",
      "Epoch: 23010/30000, Loss: 0.00176119\n",
      "Epoch: 23020/30000, Loss: 0.00175789\n",
      "Epoch: 23030/30000, Loss: 0.00175460\n",
      "Epoch: 23040/30000, Loss: 0.00175131\n",
      "Epoch: 23050/30000, Loss: 0.00174804\n",
      "Epoch: 23060/30000, Loss: 0.00174476\n",
      "Epoch: 23070/30000, Loss: 0.00174150\n",
      "Epoch: 23080/30000, Loss: 0.00173823\n",
      "Epoch: 23090/30000, Loss: 0.00173498\n",
      "Epoch: 23100/30000, Loss: 0.00173173\n",
      "Epoch: 23110/30000, Loss: 0.00172848\n",
      "Epoch: 23120/30000, Loss: 0.00172524\n",
      "Epoch: 23130/30000, Loss: 0.00172201\n",
      "Epoch: 23140/30000, Loss: 0.00171878\n",
      "Epoch: 23150/30000, Loss: 0.00171556\n",
      "Epoch: 23160/30000, Loss: 0.00171235\n",
      "Epoch: 23170/30000, Loss: 0.00170914\n",
      "Epoch: 23180/30000, Loss: 0.00170614\n",
      "Epoch: 23190/30000, Loss: 0.00170308\n",
      "Epoch: 23200/30000, Loss: 0.00169960\n",
      "Epoch: 23210/30000, Loss: 0.00169638\n",
      "Epoch: 23220/30000, Loss: 0.00169319\n",
      "Epoch: 23230/30000, Loss: 0.00169000\n",
      "Epoch: 23240/30000, Loss: 0.00168683\n",
      "Epoch: 23250/30000, Loss: 0.00168367\n",
      "Epoch: 23260/30000, Loss: 0.00168051\n",
      "Epoch: 23270/30000, Loss: 0.00167736\n",
      "Epoch: 23280/30000, Loss: 0.00167421\n",
      "Epoch: 23290/30000, Loss: 0.00167107\n",
      "Epoch: 23300/30000, Loss: 0.00166793\n",
      "Epoch: 23310/30000, Loss: 0.00166480\n",
      "Epoch: 23320/30000, Loss: 0.00166167\n",
      "Epoch: 23330/30000, Loss: 0.00165855\n",
      "Epoch: 23340/30000, Loss: 0.00165544\n",
      "Epoch: 23350/30000, Loss: 0.00165233\n",
      "Epoch: 23360/30000, Loss: 0.00164923\n",
      "Epoch: 23370/30000, Loss: 0.00164613\n",
      "Epoch: 23380/30000, Loss: 0.00164304\n",
      "Epoch: 23390/30000, Loss: 0.00163995\n",
      "Epoch: 23400/30000, Loss: 0.00163687\n",
      "Epoch: 23410/30000, Loss: 0.00163379\n",
      "Epoch: 23420/30000, Loss: 0.00163072\n",
      "Epoch: 23430/30000, Loss: 0.00162767\n",
      "Epoch: 23440/30000, Loss: 0.00162581\n",
      "Epoch: 23450/30000, Loss: 0.00162155\n",
      "Epoch: 23460/30000, Loss: 0.00161850\n",
      "Epoch: 23470/30000, Loss: 0.00161546\n",
      "Epoch: 23480/30000, Loss: 0.00161242\n",
      "Epoch: 23490/30000, Loss: 0.00160939\n",
      "Epoch: 23500/30000, Loss: 0.00160636\n",
      "Epoch: 23510/30000, Loss: 0.00160334\n",
      "Epoch: 23520/30000, Loss: 0.00160033\n",
      "Epoch: 23530/30000, Loss: 0.00159732\n",
      "Epoch: 23540/30000, Loss: 0.00159431\n",
      "Epoch: 23550/30000, Loss: 0.00159131\n",
      "Epoch: 23560/30000, Loss: 0.00158832\n",
      "Epoch: 23570/30000, Loss: 0.00158533\n",
      "Epoch: 23580/30000, Loss: 0.00158235\n",
      "Epoch: 23590/30000, Loss: 0.00157937\n",
      "Epoch: 23600/30000, Loss: 0.00157640\n",
      "Epoch: 23610/30000, Loss: 0.00157343\n",
      "Epoch: 23620/30000, Loss: 0.00157047\n",
      "Epoch: 23630/30000, Loss: 0.00156751\n",
      "Epoch: 23640/30000, Loss: 0.00156456\n",
      "Epoch: 23650/30000, Loss: 0.00156161\n",
      "Epoch: 23660/30000, Loss: 0.00155867\n",
      "Epoch: 23670/30000, Loss: 0.00155573\n",
      "Epoch: 23680/30000, Loss: 0.00155283\n",
      "Epoch: 23690/30000, Loss: 0.00155095\n",
      "Epoch: 23700/30000, Loss: 0.00154710\n",
      "Epoch: 23710/30000, Loss: 0.00154406\n",
      "Epoch: 23720/30000, Loss: 0.00154114\n",
      "Epoch: 23730/30000, Loss: 0.00153823\n",
      "Epoch: 23740/30000, Loss: 0.00153534\n",
      "Epoch: 23750/30000, Loss: 0.00153244\n",
      "Epoch: 23760/30000, Loss: 0.00152955\n",
      "Epoch: 23770/30000, Loss: 0.00152667\n",
      "Epoch: 23780/30000, Loss: 0.00152379\n",
      "Epoch: 23790/30000, Loss: 0.00152092\n",
      "Epoch: 23800/30000, Loss: 0.00151805\n",
      "Epoch: 23810/30000, Loss: 0.00151519\n",
      "Epoch: 23820/30000, Loss: 0.00151233\n",
      "Epoch: 23830/30000, Loss: 0.00150948\n",
      "Epoch: 23840/30000, Loss: 0.00150663\n",
      "Epoch: 23850/30000, Loss: 0.00150379\n",
      "Epoch: 23860/30000, Loss: 0.00150095\n",
      "Epoch: 23870/30000, Loss: 0.00149812\n",
      "Epoch: 23880/30000, Loss: 0.00149530\n",
      "Epoch: 23890/30000, Loss: 0.00149247\n",
      "Epoch: 23900/30000, Loss: 0.00148966\n",
      "Epoch: 23910/30000, Loss: 0.00148685\n",
      "Epoch: 23920/30000, Loss: 0.00148483\n",
      "Epoch: 23930/30000, Loss: 0.00148152\n",
      "Epoch: 23940/30000, Loss: 0.00147857\n",
      "Epoch: 23950/30000, Loss: 0.00147568\n",
      "Epoch: 23960/30000, Loss: 0.00147287\n",
      "Epoch: 23970/30000, Loss: 0.00147009\n",
      "Epoch: 23980/30000, Loss: 0.00146731\n",
      "Epoch: 23990/30000, Loss: 0.00146454\n",
      "Epoch: 24000/30000, Loss: 0.00146177\n",
      "Epoch: 24010/30000, Loss: 0.00145901\n",
      "Epoch: 24020/30000, Loss: 0.00145626\n",
      "Epoch: 24030/30000, Loss: 0.00145351\n",
      "Epoch: 24040/30000, Loss: 0.00145076\n",
      "Epoch: 24050/30000, Loss: 0.00144802\n",
      "Epoch: 24060/30000, Loss: 0.00144528\n",
      "Epoch: 24070/30000, Loss: 0.00144255\n",
      "Epoch: 24080/30000, Loss: 0.00143983\n",
      "Epoch: 24090/30000, Loss: 0.00143711\n",
      "Epoch: 24100/30000, Loss: 0.00143439\n",
      "Epoch: 24110/30000, Loss: 0.00143168\n",
      "Epoch: 24120/30000, Loss: 0.00142897\n",
      "Epoch: 24130/30000, Loss: 0.00142645\n",
      "Epoch: 24140/30000, Loss: 0.00142365\n",
      "Epoch: 24150/30000, Loss: 0.00142092\n",
      "Epoch: 24160/30000, Loss: 0.00141824\n",
      "Epoch: 24170/30000, Loss: 0.00141554\n",
      "Epoch: 24180/30000, Loss: 0.00141284\n",
      "Epoch: 24190/30000, Loss: 0.00141016\n",
      "Epoch: 24200/30000, Loss: 0.00140750\n",
      "Epoch: 24210/30000, Loss: 0.00140483\n",
      "Epoch: 24220/30000, Loss: 0.00140217\n",
      "Epoch: 24230/30000, Loss: 0.00139952\n",
      "Epoch: 24240/30000, Loss: 0.00139687\n",
      "Epoch: 24250/30000, Loss: 0.00139423\n",
      "Epoch: 24260/30000, Loss: 0.00139159\n",
      "Epoch: 24270/30000, Loss: 0.00138896\n",
      "Epoch: 24280/30000, Loss: 0.00138633\n",
      "Epoch: 24290/30000, Loss: 0.00138370\n",
      "Epoch: 24300/30000, Loss: 0.00138108\n",
      "Epoch: 24310/30000, Loss: 0.00137847\n",
      "Epoch: 24320/30000, Loss: 0.00137586\n",
      "Epoch: 24330/30000, Loss: 0.00137325\n",
      "Epoch: 24340/30000, Loss: 0.00137066\n",
      "Epoch: 24350/30000, Loss: 0.00136823\n",
      "Epoch: 24360/30000, Loss: 0.00136550\n",
      "Epoch: 24370/30000, Loss: 0.00136298\n",
      "Epoch: 24380/30000, Loss: 0.00136037\n",
      "Epoch: 24390/30000, Loss: 0.00135774\n",
      "Epoch: 24400/30000, Loss: 0.00135515\n",
      "Epoch: 24410/30000, Loss: 0.00135259\n",
      "Epoch: 24420/30000, Loss: 0.00135002\n",
      "Epoch: 24430/30000, Loss: 0.00134747\n",
      "Epoch: 24440/30000, Loss: 0.00134491\n",
      "Epoch: 24450/30000, Loss: 0.00134236\n",
      "Epoch: 24460/30000, Loss: 0.00133982\n",
      "Epoch: 24470/30000, Loss: 0.00133728\n",
      "Epoch: 24480/30000, Loss: 0.00133475\n",
      "Epoch: 24490/30000, Loss: 0.00133222\n",
      "Epoch: 24500/30000, Loss: 0.00132969\n",
      "Epoch: 24510/30000, Loss: 0.00132717\n",
      "Epoch: 24520/30000, Loss: 0.00132465\n",
      "Epoch: 24530/30000, Loss: 0.00132214\n",
      "Epoch: 24540/30000, Loss: 0.00131963\n",
      "Epoch: 24550/30000, Loss: 0.00131713\n",
      "Epoch: 24560/30000, Loss: 0.00131467\n",
      "Epoch: 24570/30000, Loss: 0.00131302\n",
      "Epoch: 24580/30000, Loss: 0.00130984\n",
      "Epoch: 24590/30000, Loss: 0.00130718\n",
      "Epoch: 24600/30000, Loss: 0.00130468\n",
      "Epoch: 24610/30000, Loss: 0.00130221\n",
      "Epoch: 24620/30000, Loss: 0.00129974\n",
      "Epoch: 24630/30000, Loss: 0.00129727\n",
      "Epoch: 24640/30000, Loss: 0.00129481\n",
      "Epoch: 24650/30000, Loss: 0.00129235\n",
      "Epoch: 24660/30000, Loss: 0.00128990\n",
      "Epoch: 24670/30000, Loss: 0.00128745\n",
      "Epoch: 24680/30000, Loss: 0.00128501\n",
      "Epoch: 24690/30000, Loss: 0.00128257\n",
      "Epoch: 24700/30000, Loss: 0.00128013\n",
      "Epoch: 24710/30000, Loss: 0.00127770\n",
      "Epoch: 24720/30000, Loss: 0.00127528\n",
      "Epoch: 24730/30000, Loss: 0.00127285\n",
      "Epoch: 24740/30000, Loss: 0.00127044\n",
      "Epoch: 24750/30000, Loss: 0.00126802\n",
      "Epoch: 24760/30000, Loss: 0.00126562\n",
      "Epoch: 24770/30000, Loss: 0.00126321\n",
      "Epoch: 24780/30000, Loss: 0.00126082\n",
      "Epoch: 24790/30000, Loss: 0.00125913\n",
      "Epoch: 24800/30000, Loss: 0.00125647\n",
      "Epoch: 24810/30000, Loss: 0.00125376\n",
      "Epoch: 24820/30000, Loss: 0.00125127\n",
      "Epoch: 24830/30000, Loss: 0.00124888\n",
      "Epoch: 24840/30000, Loss: 0.00124652\n",
      "Epoch: 24850/30000, Loss: 0.00124414\n",
      "Epoch: 24860/30000, Loss: 0.00124178\n",
      "Epoch: 24870/30000, Loss: 0.00123942\n",
      "Epoch: 24880/30000, Loss: 0.00123706\n",
      "Epoch: 24890/30000, Loss: 0.00123471\n",
      "Epoch: 24900/30000, Loss: 0.00123236\n",
      "Epoch: 24910/30000, Loss: 0.00123002\n",
      "Epoch: 24920/30000, Loss: 0.00122768\n",
      "Epoch: 24930/30000, Loss: 0.00122535\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 24940/30000, Loss: 0.00122302\n",
      "Epoch: 24950/30000, Loss: 0.00122069\n",
      "Epoch: 24960/30000, Loss: 0.00121837\n",
      "Epoch: 24970/30000, Loss: 0.00121605\n",
      "Epoch: 24980/30000, Loss: 0.00121373\n",
      "Epoch: 24990/30000, Loss: 0.00121143\n",
      "Epoch: 25000/30000, Loss: 0.00120915\n",
      "Epoch: 25010/30000, Loss: 0.00120792\n",
      "Epoch: 25020/30000, Loss: 0.00120470\n",
      "Epoch: 25030/30000, Loss: 0.00120225\n",
      "Epoch: 25040/30000, Loss: 0.00119995\n",
      "Epoch: 25050/30000, Loss: 0.00119766\n",
      "Epoch: 25060/30000, Loss: 0.00119539\n",
      "Epoch: 25070/30000, Loss: 0.00119311\n",
      "Epoch: 25080/30000, Loss: 0.00119084\n",
      "Epoch: 25090/30000, Loss: 0.00118857\n",
      "Epoch: 25100/30000, Loss: 0.00118631\n",
      "Epoch: 25110/30000, Loss: 0.00118405\n",
      "Epoch: 25120/30000, Loss: 0.00118180\n",
      "Epoch: 25130/30000, Loss: 0.00117955\n",
      "Epoch: 25140/30000, Loss: 0.00117730\n",
      "Epoch: 25150/30000, Loss: 0.00117506\n",
      "Epoch: 25160/30000, Loss: 0.00117282\n",
      "Epoch: 25170/30000, Loss: 0.00117058\n",
      "Epoch: 25180/30000, Loss: 0.00116835\n",
      "Epoch: 25190/30000, Loss: 0.00116613\n",
      "Epoch: 25200/30000, Loss: 0.00116391\n",
      "Epoch: 25210/30000, Loss: 0.00116169\n",
      "Epoch: 25220/30000, Loss: 0.00115947\n",
      "Epoch: 25230/30000, Loss: 0.00115727\n",
      "Epoch: 25240/30000, Loss: 0.00115593\n",
      "Epoch: 25250/30000, Loss: 0.00115328\n",
      "Epoch: 25260/30000, Loss: 0.00115085\n",
      "Epoch: 25270/30000, Loss: 0.00114854\n",
      "Epoch: 25280/30000, Loss: 0.00114631\n",
      "Epoch: 25290/30000, Loss: 0.00114411\n",
      "Epoch: 25300/30000, Loss: 0.00114192\n",
      "Epoch: 25310/30000, Loss: 0.00113974\n",
      "Epoch: 25320/30000, Loss: 0.00113757\n",
      "Epoch: 25330/30000, Loss: 0.00113540\n",
      "Epoch: 25340/30000, Loss: 0.00113323\n",
      "Epoch: 25350/30000, Loss: 0.00113107\n",
      "Epoch: 25360/30000, Loss: 0.00112892\n",
      "Epoch: 25370/30000, Loss: 0.00112676\n",
      "Epoch: 25380/30000, Loss: 0.00112461\n",
      "Epoch: 25390/30000, Loss: 0.00112247\n",
      "Epoch: 25400/30000, Loss: 0.00112033\n",
      "Epoch: 25410/30000, Loss: 0.00111819\n",
      "Epoch: 25420/30000, Loss: 0.00111605\n",
      "Epoch: 25430/30000, Loss: 0.00111392\n",
      "Epoch: 25440/30000, Loss: 0.00111180\n",
      "Epoch: 25450/30000, Loss: 0.00110968\n",
      "Epoch: 25460/30000, Loss: 0.00110756\n",
      "Epoch: 25470/30000, Loss: 0.00110544\n",
      "Epoch: 25480/30000, Loss: 0.00110340\n",
      "Epoch: 25490/30000, Loss: 0.00110159\n",
      "Epoch: 25500/30000, Loss: 0.00109945\n",
      "Epoch: 25510/30000, Loss: 0.00109713\n",
      "Epoch: 25520/30000, Loss: 0.00109496\n",
      "Epoch: 25530/30000, Loss: 0.00109285\n",
      "Epoch: 25540/30000, Loss: 0.00109076\n",
      "Epoch: 25550/30000, Loss: 0.00108867\n",
      "Epoch: 25560/30000, Loss: 0.00108659\n",
      "Epoch: 25570/30000, Loss: 0.00108452\n",
      "Epoch: 25580/30000, Loss: 0.00108245\n",
      "Epoch: 25590/30000, Loss: 0.00108038\n",
      "Epoch: 25600/30000, Loss: 0.00107831\n",
      "Epoch: 25610/30000, Loss: 0.00107625\n",
      "Epoch: 25620/30000, Loss: 0.00107420\n",
      "Epoch: 25630/30000, Loss: 0.00107214\n",
      "Epoch: 25640/30000, Loss: 0.00107010\n",
      "Epoch: 25650/30000, Loss: 0.00106805\n",
      "Epoch: 25660/30000, Loss: 0.00106601\n",
      "Epoch: 25670/30000, Loss: 0.00106397\n",
      "Epoch: 25680/30000, Loss: 0.00106194\n",
      "Epoch: 25690/30000, Loss: 0.00105991\n",
      "Epoch: 25700/30000, Loss: 0.00105788\n",
      "Epoch: 25710/30000, Loss: 0.00105588\n",
      "Epoch: 25720/30000, Loss: 0.00105525\n",
      "Epoch: 25730/30000, Loss: 0.00105184\n",
      "Epoch: 25740/30000, Loss: 0.00104982\n",
      "Epoch: 25750/30000, Loss: 0.00104782\n",
      "Epoch: 25760/30000, Loss: 0.00104582\n",
      "Epoch: 25770/30000, Loss: 0.00104381\n",
      "Epoch: 25780/30000, Loss: 0.00104181\n",
      "Epoch: 25790/30000, Loss: 0.00103981\n",
      "Epoch: 25800/30000, Loss: 0.00103782\n",
      "Epoch: 25810/30000, Loss: 0.00103584\n",
      "Epoch: 25820/30000, Loss: 0.00103385\n",
      "Epoch: 25830/30000, Loss: 0.00103188\n",
      "Epoch: 25840/30000, Loss: 0.00102990\n",
      "Epoch: 25850/30000, Loss: 0.00102793\n",
      "Epoch: 25860/30000, Loss: 0.00102596\n",
      "Epoch: 25870/30000, Loss: 0.00102400\n",
      "Epoch: 25880/30000, Loss: 0.00102204\n",
      "Epoch: 25890/30000, Loss: 0.00102008\n",
      "Epoch: 25900/30000, Loss: 0.00101813\n",
      "Epoch: 25910/30000, Loss: 0.00101617\n",
      "Epoch: 25920/30000, Loss: 0.00101423\n",
      "Epoch: 25930/30000, Loss: 0.00101228\n",
      "Epoch: 25940/30000, Loss: 0.00101034\n",
      "Epoch: 25950/30000, Loss: 0.00100852\n",
      "Epoch: 25960/30000, Loss: 0.00100648\n",
      "Epoch: 25970/30000, Loss: 0.00100460\n",
      "Epoch: 25980/30000, Loss: 0.00100263\n",
      "Epoch: 25990/30000, Loss: 0.00100071\n",
      "Epoch: 26000/30000, Loss: 0.00099879\n",
      "Epoch: 26010/30000, Loss: 0.00099687\n",
      "Epoch: 26020/30000, Loss: 0.00099496\n",
      "Epoch: 26030/30000, Loss: 0.00099306\n",
      "Epoch: 26040/30000, Loss: 0.00099115\n",
      "Epoch: 26050/30000, Loss: 0.00098926\n",
      "Epoch: 26060/30000, Loss: 0.00098736\n",
      "Epoch: 26070/30000, Loss: 0.00098547\n",
      "Epoch: 26080/30000, Loss: 0.00098358\n",
      "Epoch: 26090/30000, Loss: 0.00098169\n",
      "Epoch: 26100/30000, Loss: 0.00097981\n",
      "Epoch: 26110/30000, Loss: 0.00097793\n",
      "Epoch: 26120/30000, Loss: 0.00097605\n",
      "Epoch: 26130/30000, Loss: 0.00097418\n",
      "Epoch: 26140/30000, Loss: 0.00097231\n",
      "Epoch: 26150/30000, Loss: 0.00097045\n",
      "Epoch: 26160/30000, Loss: 0.00096858\n",
      "Epoch: 26170/30000, Loss: 0.00096672\n",
      "Epoch: 26180/30000, Loss: 0.00096487\n",
      "Epoch: 26190/30000, Loss: 0.00096301\n",
      "Epoch: 26200/30000, Loss: 0.00096117\n",
      "Epoch: 26210/30000, Loss: 0.00095932\n",
      "Epoch: 26220/30000, Loss: 0.00095752\n",
      "Epoch: 26230/30000, Loss: 0.00095663\n",
      "Epoch: 26240/30000, Loss: 0.00095426\n",
      "Epoch: 26250/30000, Loss: 0.00095211\n",
      "Epoch: 26260/30000, Loss: 0.00095018\n",
      "Epoch: 26270/30000, Loss: 0.00094833\n",
      "Epoch: 26280/30000, Loss: 0.00094650\n",
      "Epoch: 26290/30000, Loss: 0.00094468\n",
      "Epoch: 26300/30000, Loss: 0.00094287\n",
      "Epoch: 26310/30000, Loss: 0.00094106\n",
      "Epoch: 26320/30000, Loss: 0.00093925\n",
      "Epoch: 26330/30000, Loss: 0.00093744\n",
      "Epoch: 26340/30000, Loss: 0.00093564\n",
      "Epoch: 26350/30000, Loss: 0.00093384\n",
      "Epoch: 26360/30000, Loss: 0.00093205\n",
      "Epoch: 26370/30000, Loss: 0.00093026\n",
      "Epoch: 26380/30000, Loss: 0.00092847\n",
      "Epoch: 26390/30000, Loss: 0.00092668\n",
      "Epoch: 26400/30000, Loss: 0.00092490\n",
      "Epoch: 26410/30000, Loss: 0.00092312\n",
      "Epoch: 26420/30000, Loss: 0.00092135\n",
      "Epoch: 26430/30000, Loss: 0.00091957\n",
      "Epoch: 26440/30000, Loss: 0.00091780\n",
      "Epoch: 26450/30000, Loss: 0.00091604\n",
      "Epoch: 26460/30000, Loss: 0.00091427\n",
      "Epoch: 26470/30000, Loss: 0.00091251\n",
      "Epoch: 26480/30000, Loss: 0.00091076\n",
      "Epoch: 26490/30000, Loss: 0.00090907\n",
      "Epoch: 26500/30000, Loss: 0.00090790\n",
      "Epoch: 26510/30000, Loss: 0.00090589\n",
      "Epoch: 26520/30000, Loss: 0.00090388\n",
      "Epoch: 26530/30000, Loss: 0.00090206\n",
      "Epoch: 26540/30000, Loss: 0.00090029\n",
      "Epoch: 26550/30000, Loss: 0.00089856\n",
      "Epoch: 26560/30000, Loss: 0.00089683\n",
      "Epoch: 26570/30000, Loss: 0.00089510\n",
      "Epoch: 26580/30000, Loss: 0.00089337\n",
      "Epoch: 26590/30000, Loss: 0.00089165\n",
      "Epoch: 26600/30000, Loss: 0.00088993\n",
      "Epoch: 26610/30000, Loss: 0.00088822\n",
      "Epoch: 26620/30000, Loss: 0.00088651\n",
      "Epoch: 26630/30000, Loss: 0.00088480\n",
      "Epoch: 26640/30000, Loss: 0.00088309\n",
      "Epoch: 26650/30000, Loss: 0.00088139\n",
      "Epoch: 26660/30000, Loss: 0.00087969\n",
      "Epoch: 26670/30000, Loss: 0.00087799\n",
      "Epoch: 26680/30000, Loss: 0.00087630\n",
      "Epoch: 26690/30000, Loss: 0.00087461\n",
      "Epoch: 26700/30000, Loss: 0.00087292\n",
      "Epoch: 26710/30000, Loss: 0.00087124\n",
      "Epoch: 26720/30000, Loss: 0.00086955\n",
      "Epoch: 26730/30000, Loss: 0.00086800\n",
      "Epoch: 26740/30000, Loss: 0.00086626\n",
      "Epoch: 26750/30000, Loss: 0.00086476\n",
      "Epoch: 26760/30000, Loss: 0.00086297\n",
      "Epoch: 26770/30000, Loss: 0.00086124\n",
      "Epoch: 26780/30000, Loss: 0.00085955\n",
      "Epoch: 26790/30000, Loss: 0.00085788\n",
      "Epoch: 26800/30000, Loss: 0.00085622\n",
      "Epoch: 26810/30000, Loss: 0.00085456\n",
      "Epoch: 26820/30000, Loss: 0.00085291\n",
      "Epoch: 26830/30000, Loss: 0.00085127\n",
      "Epoch: 26840/30000, Loss: 0.00084962\n",
      "Epoch: 26850/30000, Loss: 0.00084798\n",
      "Epoch: 26860/30000, Loss: 0.00084634\n",
      "Epoch: 26870/30000, Loss: 0.00084471\n",
      "Epoch: 26880/30000, Loss: 0.00084307\n",
      "Epoch: 26890/30000, Loss: 0.00084144\n",
      "Epoch: 26900/30000, Loss: 0.00083982\n",
      "Epoch: 26910/30000, Loss: 0.00083819\n",
      "Epoch: 26920/30000, Loss: 0.00083657\n",
      "Epoch: 26930/30000, Loss: 0.00083495\n",
      "Epoch: 26940/30000, Loss: 0.00083333\n",
      "Epoch: 26950/30000, Loss: 0.00083172\n",
      "Epoch: 26960/30000, Loss: 0.00083011\n",
      "Epoch: 26970/30000, Loss: 0.00082861\n",
      "Epoch: 26980/30000, Loss: 0.00082706\n",
      "Epoch: 26990/30000, Loss: 0.00082561\n",
      "Epoch: 27000/30000, Loss: 0.00082383\n",
      "Epoch: 27010/30000, Loss: 0.00082215\n",
      "Epoch: 27020/30000, Loss: 0.00082053\n",
      "Epoch: 27030/30000, Loss: 0.00081893\n",
      "Epoch: 27040/30000, Loss: 0.00081734\n",
      "Epoch: 27050/30000, Loss: 0.00081576\n",
      "Epoch: 27060/30000, Loss: 0.00081418\n",
      "Epoch: 27070/30000, Loss: 0.00081260\n",
      "Epoch: 27080/30000, Loss: 0.00081103\n",
      "Epoch: 27090/30000, Loss: 0.00080945\n",
      "Epoch: 27100/30000, Loss: 0.00080789\n",
      "Epoch: 27110/30000, Loss: 0.00080632\n",
      "Epoch: 27120/30000, Loss: 0.00080476\n",
      "Epoch: 27130/30000, Loss: 0.00080319\n",
      "Epoch: 27140/30000, Loss: 0.00080164\n",
      "Epoch: 27150/30000, Loss: 0.00080008\n",
      "Epoch: 27160/30000, Loss: 0.00079853\n",
      "Epoch: 27170/30000, Loss: 0.00079698\n",
      "Epoch: 27180/30000, Loss: 0.00079543\n",
      "Epoch: 27190/30000, Loss: 0.00079389\n",
      "Epoch: 27200/30000, Loss: 0.00079235\n",
      "Epoch: 27210/30000, Loss: 0.00079103\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 27220/30000, Loss: 0.00078939\n",
      "Epoch: 27230/30000, Loss: 0.00078775\n",
      "Epoch: 27240/30000, Loss: 0.00078622\n",
      "Epoch: 27250/30000, Loss: 0.00078469\n",
      "Epoch: 27260/30000, Loss: 0.00078317\n",
      "Epoch: 27270/30000, Loss: 0.00078164\n",
      "Epoch: 27280/30000, Loss: 0.00078012\n",
      "Epoch: 27290/30000, Loss: 0.00077860\n",
      "Epoch: 27300/30000, Loss: 0.00077709\n",
      "Epoch: 27310/30000, Loss: 0.00077558\n",
      "Epoch: 27320/30000, Loss: 0.00077407\n",
      "Epoch: 27330/30000, Loss: 0.00077256\n",
      "Epoch: 27340/30000, Loss: 0.00077106\n",
      "Epoch: 27350/30000, Loss: 0.00076956\n",
      "Epoch: 27360/30000, Loss: 0.00076806\n",
      "Epoch: 27370/30000, Loss: 0.00076657\n",
      "Epoch: 27380/30000, Loss: 0.00076507\n",
      "Epoch: 27390/30000, Loss: 0.00076358\n",
      "Epoch: 27400/30000, Loss: 0.00076210\n",
      "Epoch: 27410/30000, Loss: 0.00076061\n",
      "Epoch: 27420/30000, Loss: 0.00075913\n",
      "Epoch: 27430/30000, Loss: 0.00075765\n",
      "Epoch: 27440/30000, Loss: 0.00075617\n",
      "Epoch: 27450/30000, Loss: 0.00075470\n",
      "Epoch: 27460/30000, Loss: 0.00075426\n",
      "Epoch: 27470/30000, Loss: 0.00075233\n",
      "Epoch: 27480/30000, Loss: 0.00075053\n",
      "Epoch: 27490/30000, Loss: 0.00074892\n",
      "Epoch: 27500/30000, Loss: 0.00074740\n",
      "Epoch: 27510/30000, Loss: 0.00074592\n",
      "Epoch: 27520/30000, Loss: 0.00074446\n",
      "Epoch: 27530/30000, Loss: 0.00074301\n",
      "Epoch: 27540/30000, Loss: 0.00074156\n",
      "Epoch: 27550/30000, Loss: 0.00074011\n",
      "Epoch: 27560/30000, Loss: 0.00073866\n",
      "Epoch: 27570/30000, Loss: 0.00073722\n",
      "Epoch: 27580/30000, Loss: 0.00073578\n",
      "Epoch: 27590/30000, Loss: 0.00073434\n",
      "Epoch: 27600/30000, Loss: 0.00073291\n",
      "Epoch: 27610/30000, Loss: 0.00073148\n",
      "Epoch: 27620/30000, Loss: 0.00073005\n",
      "Epoch: 27630/30000, Loss: 0.00072862\n",
      "Epoch: 27640/30000, Loss: 0.00072719\n",
      "Epoch: 27650/30000, Loss: 0.00072577\n",
      "Epoch: 27660/30000, Loss: 0.00072435\n",
      "Epoch: 27670/30000, Loss: 0.00072293\n",
      "Epoch: 27680/30000, Loss: 0.00072152\n",
      "Epoch: 27690/30000, Loss: 0.00072011\n",
      "Epoch: 27700/30000, Loss: 0.00071870\n",
      "Epoch: 27710/30000, Loss: 0.00071859\n",
      "Epoch: 27720/30000, Loss: 0.00071623\n",
      "Epoch: 27730/30000, Loss: 0.00071462\n",
      "Epoch: 27740/30000, Loss: 0.00071312\n",
      "Epoch: 27750/30000, Loss: 0.00071170\n",
      "Epoch: 27760/30000, Loss: 0.00071030\n",
      "Epoch: 27770/30000, Loss: 0.00070890\n",
      "Epoch: 27780/30000, Loss: 0.00070751\n",
      "Epoch: 27790/30000, Loss: 0.00070612\n",
      "Epoch: 27800/30000, Loss: 0.00070474\n",
      "Epoch: 27810/30000, Loss: 0.00070336\n",
      "Epoch: 27820/30000, Loss: 0.00070198\n",
      "Epoch: 27830/30000, Loss: 0.00070060\n",
      "Epoch: 27840/30000, Loss: 0.00069922\n",
      "Epoch: 27850/30000, Loss: 0.00069785\n",
      "Epoch: 27860/30000, Loss: 0.00069648\n",
      "Epoch: 27870/30000, Loss: 0.00069511\n",
      "Epoch: 27880/30000, Loss: 0.00069375\n",
      "Epoch: 27890/30000, Loss: 0.00069238\n",
      "Epoch: 27900/30000, Loss: 0.00069102\n",
      "Epoch: 27910/30000, Loss: 0.00068966\n",
      "Epoch: 27920/30000, Loss: 0.00068831\n",
      "Epoch: 27930/30000, Loss: 0.00068695\n",
      "Epoch: 27940/30000, Loss: 0.00068560\n",
      "Epoch: 27950/30000, Loss: 0.00068425\n",
      "Epoch: 27960/30000, Loss: 0.00068291\n",
      "Epoch: 27970/30000, Loss: 0.00068163\n",
      "Epoch: 27980/30000, Loss: 0.00068090\n",
      "Epoch: 27990/30000, Loss: 0.00067934\n",
      "Epoch: 28000/30000, Loss: 0.00067770\n",
      "Epoch: 28010/30000, Loss: 0.00067627\n",
      "Epoch: 28020/30000, Loss: 0.00067490\n",
      "Epoch: 28030/30000, Loss: 0.00067356\n",
      "Epoch: 28040/30000, Loss: 0.00067222\n",
      "Epoch: 28050/30000, Loss: 0.00067090\n",
      "Epoch: 28060/30000, Loss: 0.00066957\n",
      "Epoch: 28070/30000, Loss: 0.00066825\n",
      "Epoch: 28080/30000, Loss: 0.00066693\n",
      "Epoch: 28090/30000, Loss: 0.00066562\n",
      "Epoch: 28100/30000, Loss: 0.00066430\n",
      "Epoch: 28110/30000, Loss: 0.00066299\n",
      "Epoch: 28120/30000, Loss: 0.00066168\n",
      "Epoch: 28130/30000, Loss: 0.00066038\n",
      "Epoch: 28140/30000, Loss: 0.00065907\n",
      "Epoch: 28150/30000, Loss: 0.00065777\n",
      "Epoch: 28160/30000, Loss: 0.00065647\n",
      "Epoch: 28170/30000, Loss: 0.00065517\n",
      "Epoch: 28180/30000, Loss: 0.00065387\n",
      "Epoch: 28190/30000, Loss: 0.00065258\n",
      "Epoch: 28200/30000, Loss: 0.00065129\n",
      "Epoch: 28210/30000, Loss: 0.00065000\n",
      "Epoch: 28220/30000, Loss: 0.00064871\n",
      "Epoch: 28230/30000, Loss: 0.00064769\n",
      "Epoch: 28240/30000, Loss: 0.00064629\n",
      "Epoch: 28250/30000, Loss: 0.00064490\n",
      "Epoch: 28260/30000, Loss: 0.00064363\n",
      "Epoch: 28270/30000, Loss: 0.00064234\n",
      "Epoch: 28280/30000, Loss: 0.00064106\n",
      "Epoch: 28290/30000, Loss: 0.00063978\n",
      "Epoch: 28300/30000, Loss: 0.00063850\n",
      "Epoch: 28310/30000, Loss: 0.00063724\n",
      "Epoch: 28320/30000, Loss: 0.00063597\n",
      "Epoch: 28330/30000, Loss: 0.00063471\n",
      "Epoch: 28340/30000, Loss: 0.00063345\n",
      "Epoch: 28350/30000, Loss: 0.00063219\n",
      "Epoch: 28360/30000, Loss: 0.00063094\n",
      "Epoch: 28370/30000, Loss: 0.00062968\n",
      "Epoch: 28380/30000, Loss: 0.00062843\n",
      "Epoch: 28390/30000, Loss: 0.00062718\n",
      "Epoch: 28400/30000, Loss: 0.00062594\n",
      "Epoch: 28410/30000, Loss: 0.00062469\n",
      "Epoch: 28420/30000, Loss: 0.00062345\n",
      "Epoch: 28430/30000, Loss: 0.00062221\n",
      "Epoch: 28440/30000, Loss: 0.00062097\n",
      "Epoch: 28450/30000, Loss: 0.00061973\n",
      "Epoch: 28460/30000, Loss: 0.00061851\n",
      "Epoch: 28470/30000, Loss: 0.00061847\n",
      "Epoch: 28480/30000, Loss: 0.00061651\n",
      "Epoch: 28490/30000, Loss: 0.00061499\n",
      "Epoch: 28500/30000, Loss: 0.00061361\n",
      "Epoch: 28510/30000, Loss: 0.00061236\n",
      "Epoch: 28520/30000, Loss: 0.00061115\n",
      "Epoch: 28530/30000, Loss: 0.00060992\n",
      "Epoch: 28540/30000, Loss: 0.00060870\n",
      "Epoch: 28550/30000, Loss: 0.00060749\n",
      "Epoch: 28560/30000, Loss: 0.00060628\n",
      "Epoch: 28570/30000, Loss: 0.00060507\n",
      "Epoch: 28580/30000, Loss: 0.00060386\n",
      "Epoch: 28590/30000, Loss: 0.00060265\n",
      "Epoch: 28600/30000, Loss: 0.00060145\n",
      "Epoch: 28610/30000, Loss: 0.00060025\n",
      "Epoch: 28620/30000, Loss: 0.00059905\n",
      "Epoch: 28630/30000, Loss: 0.00059785\n",
      "Epoch: 28640/30000, Loss: 0.00059665\n",
      "Epoch: 28650/30000, Loss: 0.00059546\n",
      "Epoch: 28660/30000, Loss: 0.00059426\n",
      "Epoch: 28670/30000, Loss: 0.00059307\n",
      "Epoch: 28680/30000, Loss: 0.00059189\n",
      "Epoch: 28690/30000, Loss: 0.00059137\n",
      "Epoch: 28700/30000, Loss: 0.00059045\n",
      "Epoch: 28710/30000, Loss: 0.00058858\n",
      "Epoch: 28720/30000, Loss: 0.00058724\n",
      "Epoch: 28730/30000, Loss: 0.00058601\n",
      "Epoch: 28740/30000, Loss: 0.00058481\n",
      "Epoch: 28750/30000, Loss: 0.00058363\n",
      "Epoch: 28760/30000, Loss: 0.00058246\n",
      "Epoch: 28770/30000, Loss: 0.00058129\n",
      "Epoch: 28780/30000, Loss: 0.00058013\n",
      "Epoch: 28790/30000, Loss: 0.00057896\n",
      "Epoch: 28800/30000, Loss: 0.00057780\n",
      "Epoch: 28810/30000, Loss: 0.00057664\n",
      "Epoch: 28820/30000, Loss: 0.00057548\n",
      "Epoch: 28830/30000, Loss: 0.00057432\n",
      "Epoch: 28840/30000, Loss: 0.00057317\n",
      "Epoch: 28850/30000, Loss: 0.00057202\n",
      "Epoch: 28860/30000, Loss: 0.00057086\n",
      "Epoch: 28870/30000, Loss: 0.00056972\n",
      "Epoch: 28880/30000, Loss: 0.00056857\n",
      "Epoch: 28890/30000, Loss: 0.00056742\n",
      "Epoch: 28900/30000, Loss: 0.00056628\n",
      "Epoch: 28910/30000, Loss: 0.00056514\n",
      "Epoch: 28920/30000, Loss: 0.00056400\n",
      "Epoch: 28930/30000, Loss: 0.00056286\n",
      "Epoch: 28940/30000, Loss: 0.00056176\n",
      "Epoch: 28950/30000, Loss: 0.00056256\n",
      "Epoch: 28960/30000, Loss: 0.00055960\n",
      "Epoch: 28970/30000, Loss: 0.00055835\n",
      "Epoch: 28980/30000, Loss: 0.00055721\n",
      "Epoch: 28990/30000, Loss: 0.00055609\n",
      "Epoch: 29000/30000, Loss: 0.00055496\n",
      "Epoch: 29010/30000, Loss: 0.00055384\n",
      "Epoch: 29020/30000, Loss: 0.00055272\n",
      "Epoch: 29030/30000, Loss: 0.00055160\n",
      "Epoch: 29040/30000, Loss: 0.00055049\n",
      "Epoch: 29050/30000, Loss: 0.00054938\n",
      "Epoch: 29060/30000, Loss: 0.00054827\n",
      "Epoch: 29070/30000, Loss: 0.00054716\n",
      "Epoch: 29080/30000, Loss: 0.00054605\n",
      "Epoch: 29090/30000, Loss: 0.00054494\n",
      "Epoch: 29100/30000, Loss: 0.00054384\n",
      "Epoch: 29110/30000, Loss: 0.00054274\n",
      "Epoch: 29120/30000, Loss: 0.00054164\n",
      "Epoch: 29130/30000, Loss: 0.00054054\n",
      "Epoch: 29140/30000, Loss: 0.00053944\n",
      "Epoch: 29150/30000, Loss: 0.00053835\n",
      "Epoch: 29160/30000, Loss: 0.00053726\n",
      "Epoch: 29170/30000, Loss: 0.00053617\n",
      "Epoch: 29180/30000, Loss: 0.00053508\n",
      "Epoch: 29190/30000, Loss: 0.00053403\n",
      "Epoch: 29200/30000, Loss: 0.00053486\n",
      "Epoch: 29210/30000, Loss: 0.00053211\n",
      "Epoch: 29220/30000, Loss: 0.00053081\n",
      "Epoch: 29230/30000, Loss: 0.00052968\n",
      "Epoch: 29240/30000, Loss: 0.00052860\n",
      "Epoch: 29250/30000, Loss: 0.00052752\n",
      "Epoch: 29260/30000, Loss: 0.00052645\n",
      "Epoch: 29270/30000, Loss: 0.00052538\n",
      "Epoch: 29280/30000, Loss: 0.00052431\n",
      "Epoch: 29290/30000, Loss: 0.00052324\n",
      "Epoch: 29300/30000, Loss: 0.00052217\n",
      "Epoch: 29310/30000, Loss: 0.00052111\n",
      "Epoch: 29320/30000, Loss: 0.00052005\n",
      "Epoch: 29330/30000, Loss: 0.00051899\n",
      "Epoch: 29340/30000, Loss: 0.00051793\n",
      "Epoch: 29350/30000, Loss: 0.00051688\n",
      "Epoch: 29360/30000, Loss: 0.00051582\n",
      "Epoch: 29370/30000, Loss: 0.00051477\n",
      "Epoch: 29380/30000, Loss: 0.00051372\n",
      "Epoch: 29390/30000, Loss: 0.00051267\n",
      "Epoch: 29400/30000, Loss: 0.00051163\n",
      "Epoch: 29410/30000, Loss: 0.00051058\n",
      "Epoch: 29420/30000, Loss: 0.00050954\n",
      "Epoch: 29430/30000, Loss: 0.00050850\n",
      "Epoch: 29440/30000, Loss: 0.00050749\n",
      "Epoch: 29450/30000, Loss: 0.00050826\n",
      "Epoch: 29460/30000, Loss: 0.00050539\n",
      "Epoch: 29470/30000, Loss: 0.00050440\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 29480/30000, Loss: 0.00050337\n",
      "Epoch: 29490/30000, Loss: 0.00050232\n",
      "Epoch: 29500/30000, Loss: 0.00050127\n",
      "Epoch: 29510/30000, Loss: 0.00050024\n",
      "Epoch: 29520/30000, Loss: 0.00049921\n",
      "Epoch: 29530/30000, Loss: 0.00049819\n",
      "Epoch: 29540/30000, Loss: 0.00049717\n",
      "Epoch: 29550/30000, Loss: 0.00049615\n",
      "Epoch: 29560/30000, Loss: 0.00049514\n",
      "Epoch: 29570/30000, Loss: 0.00049412\n",
      "Epoch: 29580/30000, Loss: 0.00049311\n",
      "Epoch: 29590/30000, Loss: 0.00049210\n",
      "Epoch: 29600/30000, Loss: 0.00049109\n",
      "Epoch: 29610/30000, Loss: 0.00049008\n",
      "Epoch: 29620/30000, Loss: 0.00048907\n",
      "Epoch: 29630/30000, Loss: 0.00048807\n",
      "Epoch: 29640/30000, Loss: 0.00048707\n",
      "Epoch: 29650/30000, Loss: 0.00048606\n",
      "Epoch: 29660/30000, Loss: 0.00048507\n",
      "Epoch: 29670/30000, Loss: 0.00048410\n",
      "Epoch: 29680/30000, Loss: 0.00048515\n",
      "Epoch: 29690/30000, Loss: 0.00048211\n",
      "Epoch: 29700/30000, Loss: 0.00048110\n",
      "Epoch: 29710/30000, Loss: 0.00048011\n",
      "Epoch: 29720/30000, Loss: 0.00047913\n",
      "Epoch: 29730/30000, Loss: 0.00047814\n",
      "Epoch: 29740/30000, Loss: 0.00047715\n",
      "Epoch: 29750/30000, Loss: 0.00047616\n",
      "Epoch: 29760/30000, Loss: 0.00047518\n",
      "Epoch: 29770/30000, Loss: 0.00047420\n",
      "Epoch: 29780/30000, Loss: 0.00047323\n",
      "Epoch: 29790/30000, Loss: 0.00047225\n",
      "Epoch: 29800/30000, Loss: 0.00047128\n",
      "Epoch: 29810/30000, Loss: 0.00047030\n",
      "Epoch: 29820/30000, Loss: 0.00046933\n",
      "Epoch: 29830/30000, Loss: 0.00046837\n",
      "Epoch: 29840/30000, Loss: 0.00046740\n",
      "Epoch: 29850/30000, Loss: 0.00046643\n",
      "Epoch: 29860/30000, Loss: 0.00046547\n",
      "Epoch: 29870/30000, Loss: 0.00046451\n",
      "Epoch: 29880/30000, Loss: 0.00046355\n",
      "Epoch: 29890/30000, Loss: 0.00046259\n",
      "Epoch: 29900/30000, Loss: 0.00046164\n",
      "Epoch: 29910/30000, Loss: 0.00046069\n",
      "Epoch: 29920/30000, Loss: 0.00046031\n",
      "Epoch: 29930/30000, Loss: 0.00045954\n",
      "Epoch: 29940/30000, Loss: 0.00045790\n",
      "Epoch: 29950/30000, Loss: 0.00045689\n",
      "Epoch: 29960/30000, Loss: 0.00045594\n",
      "Epoch: 29970/30000, Loss: 0.00045500\n",
      "Epoch: 29980/30000, Loss: 0.00045406\n",
      "Epoch: 29990/30000, Loss: 0.00045312\n",
      "Epoch: 30000/30000, Loss: 0.00045218\n",
      "torch.Size([1, 256])\n",
      "torch.Size([256])\n"
     ]
    }
   ],
   "source": [
    "# Create coRNN instance\n",
    "cornn = coRNN(input_size, hidden_size, output_size, dt=0.1, gamma=1.0, epsilon=0.01)\n",
    "\n",
    "# Loss and optimizer\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(cornn.parameters(), lr=0.001)\n",
    "\n",
    "# Training loop\n",
    "for epoch in range(num_epochs):\n",
    "    # Forward pass\n",
    "    output = cornn(input_tensor)\n",
    "    loss = criterion(output, target_tensor)\n",
    "\n",
    "    # Backward and optimize\n",
    "    optimizer.zero_grad()\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "\n",
    "    # Print progress\n",
    "    if (epoch+1) % 10 == 0:\n",
    "        print(f'Epoch: {epoch+1}/{num_epochs}, Loss: {loss.item():.8f}')\n",
    "\n",
    "\n",
    "with torch.no_grad():\n",
    "    prediction = cornn(test_tensor)\n",
    "\n",
    "print(prediction.shape)\n",
    "\n",
    "final_time_output = prediction[-1, :]\n",
    "print(final_time_output.shape)\n",
    "\n",
    "final_out = final_time_output.detach().numpy().reshape(-1,1)\n",
    "final_true = u[:,-1].reshape(-1,1)\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "5551399f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 256)\n",
      "(1, 201)\n",
      "(256, 201)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/data/localhome/tkapoor/.local/lib/python3.8/site-packages/numpy/ma/core.py:2820: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  _data = np.array(data, dtype=dtype, copy=copy,\n",
      "/usr/local/lib/python3.8/dist-packages/matplotlib/contour.py:1180: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  self.levels = np.asarray(levels_arg).astype(np.float64)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('NLS.mat')\n",
    "\n",
    "# Following is the code to plot the data u vs x and t. u is 256*100\n",
    "# matrix. Use first 75 columns for training and 25 for testing :)\n",
    "\n",
    "# Access the variables stored in the .mat file\n",
    "# The variable names in the .mat file become keys in the loaded dictionary\n",
    "x = mat_data['x']\n",
    "t = mat_data['tt']\n",
    "u = mat_data['uu']\n",
    "\n",
    "# Use the loaded variables as needed\n",
    "print(x.shape)\n",
    "print(t.shape)\n",
    "print(u.shape)\n",
    "\n",
    "X, T = np.meshgrid(x, t)\n",
    "# Define custom color levels\n",
    "c_levels = np.linspace(np.min(u), np.max(u), 100)\n",
    "\n",
    "# Plot the contour\n",
    "plt.figure()\n",
    "plt.figure(figsize=(15, 5))\n",
    "plt.contourf(T, X, u.T, levels=c_levels, cmap='coolwarm')\n",
    "plt.xlabel('t')\n",
    "plt.ylabel('x')\n",
    "plt.title('Schrondinger-Equation')\n",
    "plt.colorbar()  # Add a colorbar for the contour levels\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "f597f4ab",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 1, 256])\n",
      "torch.Size([1, 40, 256])\n"
     ]
    }
   ],
   "source": [
    "print(test_tensor.shape)\n",
    "prediction_tensor = torch.zeros(1, 40, 256).float()\n",
    "print(prediction_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "e8702beb",
   "metadata": {},
   "outputs": [],
   "source": [
    "with torch.no_grad():\n",
    "    prediction = cornn(test_tensor)\n",
    "    prediction = prediction.view(1, 1, 256).float()\n",
    "    prediction_tensor[:, 0, :] = prediction\n",
    "    for i in range(39):\n",
    "        prediction = cornn(prediction)\n",
    "        prediction = prediction.view(1, 1, 256).float()\n",
    "        prediction_tensor[:, i+1, :] = prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "f784a4e6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "prediction (256,)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Relative Error Test:  1.0156650999704195 %\n"
     ]
    }
   ],
   "source": [
    "\n",
    "\n",
    "\n",
    "final_out = final_time_output.detach().numpy().reshape(-1,)\n",
    "final_true = u[:,-1].reshape(-1,1)\n",
    "\n",
    "final_true = np.abs(final_true)\n",
    "final_out = np.abs(final_out)\n",
    "\n",
    "print(\"prediction\", final_out.shape)\n",
    "plt.plot(x.T, final_out)\n",
    "plt.plot(x.T, final_true)\n",
    "plt.show()\n",
    "# # quit()\n",
    "\n",
    "# # # Flatten prediction tensor\n",
    "# prediction = prediction.view(-1).numpy()\n",
    "# print(prediction.shape)\n",
    "\n",
    "# # # Convert NumPy arrays to PyTorch tensors\n",
    "final_out_tensor = torch.from_numpy(final_out)\n",
    "final_true_tensor = torch.from_numpy(final_true)\n",
    "\n",
    "# print(final_out_tensor.shape)\n",
    "# print(final_true_tensor.shape)\n",
    "\n",
    "# # # Compute the relative L2 error norm (generalization error)\n",
    "relative_error_test = torch.mean((final_out_tensor - final_true_tensor)**2)/ torch.mean(final_true_tensor**2)\n",
    "\n",
    "print(\"Relative Error Test: \", relative_error_test.item(), \"%\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "f5fc2927",
   "metadata": {},
   "outputs": [],
   "source": [
    "### snapshots"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "1ccc26d9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(256, 201)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prediction_tensor = torch.squeeze(prediction_tensor)\n",
    "h = np.abs(u)\n",
    "h.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "685cc14e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(256, 1)\n",
      "(256, 1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "# # Make sure the font is Times Roman\n",
    "# plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# # Perform the prediction\n",
    "# with torch.no_grad():\n",
    "#     prediction = lem(test_tensor)\n",
    "\n",
    "final_time_output = prediction_tensor[-38, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = h[:, -38].reshape(-1, 1)\n",
    "print(final_out.shape)\n",
    "print(final_true.shape)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x.T, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x.T, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${|u(x, t)|}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 1.28}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-5, 0, 5])\n",
    "ax.set_yticks([0, 2, 4])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "\n",
    "# Increase font size for x and y axis numbers\n",
    "ax.tick_params(axis='both', which='major', labelsize=24)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('coRNN_1.28_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "8a4ea34d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(256, 1)\n",
      "(256, 1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "# # Make sure the font is Times Roman\n",
    "# plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# # Perform the prediction\n",
    "# with torch.no_grad():\n",
    "#     prediction = lem(test_tensor)\n",
    "\n",
    "\n",
    "final_time_output = prediction_tensor[-3, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = h[:, -3].reshape(-1, 1)\n",
    "print(final_out.shape)\n",
    "print(final_true.shape)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x.T, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x.T, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${u(x, t)}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 1.5}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-5, 0, 5])\n",
    "ax.set_yticks([0, 2, 4])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "\n",
    "# Increase font size for x and y axis numbers\n",
    "ax.tick_params(axis='both', which='major', labelsize=24)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('coRNN_1.5_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4436afab",
   "metadata": {},
   "source": [
    "### error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "2ad8d9cc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1, 1, 256])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "1712088c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.02695056 0.02802405 0.02914028 ... 0.03030097 0.02914028 0.02802405]\n",
      " [0.02830826 0.02846008 0.02892091 ... 0.02978105 0.02892091 0.02846008]\n",
      " [0.02890662 0.02901981 0.02934887 ... 0.02994636 0.02934887 0.02901981]\n",
      " ...\n",
      " [0.05102925 0.05110305 0.05126979 ... 0.05150113 0.05126979 0.05110305]\n",
      " [0.05115212 0.05109786 0.05112245 ... 0.05130366 0.05112245 0.05109786]\n",
      " [0.05105769 0.05101199 0.05109009 ... 0.05132839 0.05109009 0.05101199]]\n"
     ]
    }
   ],
   "source": [
    "# true solution\n",
    "h_true = np.abs(u)\n",
    "h_true = h_true.T\n",
    "print(h_true)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "3078b5d4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(40, 256)\n"
     ]
    }
   ],
   "source": [
    "# exact\n",
    "u_test_full = h_true[161:201, :]\n",
    "print(u_test_full.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "259d40da",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([40, 256])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "k1 = (prediction_tensor - u_test_full)**2\n",
    "u_test_full_tensor = torch.tensor(u_test_full**2)\n",
    "prediction_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "854150e8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Relative Error Test:  0.04264380179514161 %\n"
     ]
    }
   ],
   "source": [
    "# Compute the relative L2 error norm (generalization error)\n",
    "relative_error_test = torch.mean(k1)/ torch.mean(u_test_full_tensor)\n",
    "\n",
    "print(\"Relative Error Test: \", relative_error_test.item(), \"%\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "2a3e1489",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.6596, dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "R_abs = torch.max(prediction_tensor-u_test_full)\n",
    "print(R_abs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "64092ef9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Explained Variance Score: 0.9250977371789145\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "\n",
    "a = prediction_tensor\n",
    "b = u_test_full\n",
    "# Assuming 'a' is your predicted values (model's predictions) and 'b' is the true values (ground truth)\n",
    "# Make sure 'a' and 'b' are PyTorch tensors\n",
    "b = torch.tensor(b)\n",
    "# Calculate the mean of 'b'\n",
    "mean_b = torch.mean(b)\n",
    "\n",
    "# Calculate the Explained Variance Score\n",
    "numerator = torch.var(b - a)  # Variance of the differences between 'b' and 'a'\n",
    "denominator = torch.var(b)    # Variance of 'b'\n",
    "evs = 1 - numerator / denominator\n",
    "\n",
    "print(\"Explained Variance Score:\", evs.item())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "b0474147",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.1003, dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "R_mean = torch.mean(torch.abs(prediction_tensor - u_test_full))\n",
    "print(R_mean)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7b1feea7",
   "metadata": {},
   "source": [
    "### contour 80-20/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "2c40e1da",
   "metadata": {},
   "outputs": [],
   "source": [
    "conc_u = torch.squeeze(input_tensor)\n",
    "concatenated_tensor = torch.cat((conc_u, prediction_tensor), dim=0)\n",
    "\n",
    "t1 = np.linspace(0, 1.5707 , 200)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "c0e73bd5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import FixedLocator\n",
    "\n",
    "# Assuming you have defined concatenated_tensor as a PyTorch tensor\n",
    "# concatenated_tensor = torch.cat((tensor1, tensor2), dim=0)\n",
    "\n",
    "# Convert concatenated_tensor to a NumPy array\n",
    "concatenated_array = concatenated_tensor.numpy()\n",
    "\n",
    "# Define custom color levels\n",
    "x = np.linspace(-5, 5, concatenated_array.shape[1])  # Replace 0 and 1 with your actual x range\n",
    "t = np.linspace(0, 1.57, concatenated_array.shape[0])  # Replace 0 and 1 with your actual t range\n",
    "X, T = np.meshgrid(x, t1)\n",
    "\n",
    "# Define custom color levels using the minimum and maximum from the NumPy array\n",
    "c_levels = np.linspace(np.min(concatenated_array), np.max(concatenated_array), 400)\n",
    "\n",
    "# Plot the contour with interpolated data\n",
    "plt.figure(figsize=(20, 5))\n",
    "plt.pcolormesh(T, X, concatenated_array, shading='auto', cmap='twilight')\n",
    "\n",
    "# Set the fontweight for axis labels to regular (not bold)\n",
    "plt.xlabel(\"$t$\", fontsize=26)\n",
    "plt.ylabel(\"$x$\", fontsize=26)\n",
    "plt.title(\"$|u(x, t)|$\", fontsize=26)\n",
    "\n",
    "# Set tick labels fontweight to regular (not bold) and increase font size\n",
    "plt.tick_params(axis='both', which='major', labelsize=20, width=3, length=10)\n",
    "\n",
    "# Set the fontweight for tick labels to regular (not bold)\n",
    "for tick in plt.gca().get_xticklabels() + plt.gca().get_yticklabels():\n",
    "    tick.set_weight('normal')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 5\n",
    "num_ticks = 5\n",
    "x_ticks = np.linspace(np.min(T), np.max(T), num_ticks)\n",
    "y_ticks = np.linspace(np.min(X), np.max(X), num_ticks)\n",
    "\n",
    "plt.gca().xaxis.set_major_locator(FixedLocator(x_ticks))\n",
    "plt.gca().yaxis.set_major_locator(FixedLocator(y_ticks))\n",
    "\n",
    "cbar1 = plt.colorbar()\n",
    "# Set the number of ticks for the color bar with uniformly distributed numbers\n",
    "num_ticks = 5\n",
    "c_ticks = np.linspace(np.min(concatenated_array), np.max(concatenated_array), num_ticks)\n",
    "cbar1.set_ticks(c_ticks)\n",
    "\n",
    "# Set the fontweight and fontsize for color bar tick labels\n",
    "for t in cbar1.ax.get_yticklabels():\n",
    "    t.set_weight('normal')\n",
    "    t.set_fontsize(26)  # Increase the font size for color bar tick labels\n",
    "\n",
    "# Increase the size of numbers on axis and color bar\n",
    "plt.xticks(fontsize=26)\n",
    "plt.yticks(fontsize=26)\n",
    "\n",
    "# Increase the tick size and width of the color bar\n",
    "cbar1.ax.tick_params(axis='both', which='major', labelsize=30, width=3,  length=10)\n",
    "\n",
    "# Add a dotted line at t = 0.8\n",
    "plt.axvline(x=1.26449, color='black', linestyle='dotted', linewidth=5)\n",
    "\n",
    "#plt.savefig('Contour_LEM_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "plt.savefig('contour_coRNN_20.jpeg', dpi=500, bbox_inches=\"tight\")\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1fd8ce2e",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "pytorch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
